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

时间:2015-08-03 19:18:41

标签: c# dynamic properties parameters

我们有一个具有getter的类的属性 - 返回值

前:

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

GetTheValue是我们的框架方法,它接受参数值并返回字符串。参数vlaue现在是硬编码的,我们想让它变得动态...我们想要将参数值直接传递给Property。我们可以将参数传递给属性吗?不想把它作为方法,只想把参数传递给属性..我怎么能实现这个呢?

2 个答案:

答案 0 :(得分:7)

可以使用类似属性的indexer ......

- name: copy & unpack the file
  unarchive: src=/path/to/file/on/local/host
             dest=/path/to/target
             copy=yes

- name: copy custom config
  copy: src=/path/to/src/file
        dest=/path/to/target

- name: Enable service
  service: name=foo enabled=yes state=started

滥用。我只想用一种方法......

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

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

答案 1 :(得分:3)

您正在做的事情完美地描述了方法的目的。您希望这样做:

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

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