获取附加属性的属性名称

时间:2017-08-04 14:49:46

标签: c# .net attributes

对标题感到抱歉我根本不知道怎么称呼它。这就是我想要实现的目标。

[MyCustomAttribute]
string FormFirstName;

public MyCustomAttribute: Attribute
public MyCustomAttribute(something?){
  string propertyName = "FormFirstName";
}

我试图在我的属性中获取一个值,该值表示属性附加到的属性的名称,而不必将其赋予属性,没有MyCustomAttribute(“FormFirstName”),目标是使用反射(我认为)获取属性的名称及其类型等...它也必须在类型字符串上可行。

THX:D

1 个答案:

答案 0 :(得分:2)

你想做什么根本无法做到。属性不知道声明它的成员/类型/ etc。你需要反过来做。当您检查属性的存在时(因为这不是自动完成的 - 您需要通过反射API查询属性),您可以告诉属性它的内容。例如:

var fieldInfo = ...
var attribs = (MyCustomAttribute[])Attribute.GetCustomAttributes(
    fieldInfo, typeof(MyCustomAttribute));
foreach(var attrib in attribs) {
    attrib.DoSomething(fieldInfo);
}