C#获取自定义属性目标的memberinfo

Wal*_*art 2 c# reflection

给定一个自定义属性,我想获得其目标的名称:

public class Example
{
    [Woop] ////// basically I want to get "Size" datamember name from the attribute
    public float Size;
}

public class Tester
{
    public static void Main()
    {
        Type type = typeof(Example);
        object[] attributes = type.GetCustomAttributes(typeof(WoopAttribute), false);

        foreach (var attribute in attributes)
        {
            // I have the attribute, but what is the name of it's target? (Example.Size)
            attribute.GetTargetName(); //??
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

希望它清楚!

Cas*_*jne 7

反过来做:

重复

 MemberInfo[] members = type.GetMembers();
Run Code Online (Sandbox Code Playgroud)

并要求

 Object[] myAttributes = members[i].GetCustomAttributes(true);
Run Code Online (Sandbox Code Playgroud)

要么

 foreach(MemberInfo member in type.GetMembers()) {
     Object[] myAttributes = member.GetCustomAttributes(typeof(WoopAttribute),true);
     if(myAttributes.Length > 0)
     {
        MemberInfo woopmember = member; //<--- gotcha
     }
 }
Run Code Online (Sandbox Code Playgroud)

但Linq更好:

var members = from member in type.GetMembers()
    from attribute in member.GetCustomAttributes(typeof(WoopAttribute),true)
    select member;
Run Code Online (Sandbox Code Playgroud)