我们可以将参数传递给 C# 属性 吗?

Can we pass parameter to C# property?

我们有 class 的属性,它具有 getter - returns 的值

例如:

Public Employee Department
{
get { return GetTheValue("Mid Level") ;} 
}

GetTheValue 是我们的框架方法,它接受参数值和 returns 字符串。参数 vlaue 现在是硬编码的,我们希望使其动态化...我们希望将该参数值直接传递给 属性。我们可以将参数传递给 属性 吗?不想将其作为方法,只想将参数传递给 属性.. 我该如何实现?

可以使用类似于属性...

indexer
public Employee this[string department]
{
    get
    {
        return GetTheValue(department);
    }
}
...

var instance = new Whatever();
var employee = instance["Mid Level"]

但那是滥用。我只想使用一种方法...

public Employee GetDepartment(string department)
{
    return GetTheValue(department);
}

您所做的完美地描述了方法的目的。您想要这样做:

public Employee GetDepartment(string value)
{
    return GetTheValue(value);
}

因为您要的是向 属性 添加参数,而 属性 只是两种方法的语法糖,get_xxxset_xxx可以在调用约定方面进行优化的地方。因此,属性的设计并不适合您正在做的事情。