如何将非常量值传递给Attribute

时间:2014-04-17 07:29:33

标签: c# attributes parameter-passing

有没有办法将非常量复数或原始值传递给属性?

public class SomeClass
{
     private SomeOtherClass _someOtherClass = new SomeOtherClass();
     private int _somePrimitiveVariable = CalculateSomeValue();

     [MyAttribute(InputValue = _someOtherClass)
     public void MyMethod()
     {
         //Some stuff
     }
     //Or can it be like this?
     [MyAttribute(InputValue = _somePrimitiveVariable)
     public void MyMethod()
     {
         //Some stuff
     }
}

1 个答案:

答案 0 :(得分:0)

属性在编译时解析,因此说“不”的评论大多是正确的。

但是,如果您无法重新设计,那么解决方法有限。如果这是您希望设置的通用属性(将应用于属性的每个用户),您最好的选择可能是在代码中使用初始化方法调用属性的配置方法。这看起来与Can C# Attributes access the Target Class?模糊相似。丑陋,但可能在特定情况下工作。