【发布时间】:2015-09-02 11:04:57
【问题描述】:
我有一个自定义属性,我希望它有一个属性的名称作为输入。因为名称是一个字符串,所以它是一个有效的输入类型(因为属性对于它们可以作为构造函数的输入是非常有限的)。 但是我怎样才能做到这一点呢?
以这个示例代码为例:
public class MyCustomAttribute : Attribute {
public MyCustomAttribute(string propertyName) {}
}
public class Foo {
public bool MyCustomProperty { get; set; }
[MyCustom(SomeMagicAppliedToMyCustomProperty)] // I want the attribute to receive something along the lines of "Foo.MyCustomProperty"
public void Bar();
}
如何在属性可以在其构造函数中接收的限制的情况下完成此操作?
【问题讨论】:
-
您是说要传入 属性的名称 而不对字符串进行硬编码,还是要传入 存储在属性中的值(这不可能发生,因为这是编译时的事情)
-
为什么不只是在方法中施展魔法呢?
-
@JamesThorpe 我想传递 属性的名称 而不对字符串进行硬编码。
-
我能看到的第一个绊脚点是,如果属性位于不同的属性上,它应该如何知道它所指的属性。如果你有关于如何计算属性的规则,那么有什么理由不在你的属性中包含它们以节省传递任何东西的需要吗?
-
你想解决什么问题?
标签: c# .net .net-attributes