在构造函数中使用自定义属性 - C#

时间:2009-06-26 20:43:28

标签: c# reflection

我想要访问类中Field的自定义属性。我想在字段构造函数中访问放置在字段上的属性。这可能吗?

编辑06/28/09 像下面的伪代码

class SpecialInt

{

int _intVal; 
int _maxVal; 
public SpecialInt() 
{ 
    //Get attribute for the instantiated specialint 
    _maxVal = GetAttribute("MaxValue") 

} }

class main()

{

[MaxValue(100)] 
SpecialInt sInt; 
public main() 
{ 
    sInt = new SpecialInt() 
} 

int _intVal; int _maxVal; public SpecialInt() { //Get attribute for the instantiated specialint _maxVal = GetAttribute("MaxValue")

2 个答案:

答案 0 :(得分:6)

当然这是可能的。属性存储在元数据中,在构造对象时可以轻松访问。

public class Foo { 
  [Something]
  public int Field1;

  public Foo() {
    FieldInfo fi = typeof(Foo).GetField("Field1");
    SomethingAttribute si = (SomethingAttribute)fi.GetCustomAttribute(typeof(SomethingAttribute),false)[0];
    // grab any Custom attribute off of Fiield1 here
  }
}

答案 1 :(得分:1)

您可以从任何地方测试它们。编译时,属性将插入到类型的元数据中。不需要实例化类型来访问字段属性。