我们可以将参数传递给 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_xxx
和 set_xxx
可以在调用约定方面进行优化的地方。因此,属性的设计并不适合您正在做的事情。
我们有 class 的属性,它具有 getter - returns 的值
例如:
Public Employee Department
{
get { return GetTheValue("Mid Level") ;}
}
GetTheValue 是我们的框架方法,它接受参数值和 returns 字符串。参数 vlaue 现在是硬编码的,我们希望使其动态化...我们希望将该参数值直接传递给 属性。我们可以将参数传递给 属性 吗?不想将其作为方法,只想将参数传递给 属性.. 我该如何实现?
您可以使用类似于属性...
的indexerpublic 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_xxx
和 set_xxx
可以在调用约定方面进行优化的地方。因此,属性的设计并不适合您正在做的事情。