【问题标题】:How to pass non-constant values to Attribute如何将非常量值传递给属性
【发布时间】:2014-04-17 07:29:33
【问题描述】:

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

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
     }
}

【问题讨论】:

标签: c# attributes parameter-passing


【解决方案1】:

属性是在编译时解析的,所以说“不”的 cmets 大多是正确的。

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

【讨论】:

  • 这是一个有趣的方法。我现在正在研究这个概念。
  • 我不能否认你的帮助。我用你的方法做到了一定程度。但最终,由于子结构的原因,我不得不通过 HttpContext 会话对象来完成。但是,您的方法确实有所帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2023-03-16
  • 2017-03-02
相关资源
最近更新 更多