屬性如果我有:.NET的房產
[SomeAttr]
public Int32 SomeProperty
{
get; set;
}
是否有可能爲SomeAttr
告訴什麼財產它上漲到?是否至少可以告訴Type
property
是什麼?
屬性如果我有:.NET的房產
[SomeAttr]
public Int32 SomeProperty
{
get; set;
}
是否有可能爲SomeAttr
告訴什麼財產它上漲到?是否至少可以告訴Type
property
是什麼?
不,你不能。不直接。
你能做什麼,你收集屬性的那一刻,設置有額外的信息屬性:
class SomeAttr: Attribute
{
public PropertyInfo Target {get;set;}
}
...當你收集到的信息:
Type type = ... // The type which holds the property.
PropertyInfo propertyInfo = typeo.GetProperty("SomeProperty");
Type propertyType = propertyInfo.PropertyType;
SomeAttr attr = propertyInfo.GetCustomAttributes(false).OfType<SomeAttr>().FirstOrDefault();
attr.Target = propertyInfo; // <== Set the target information.
這樣,您隨時可以在代碼中的其他位置檢索其目標成員:
public void DoSomethingWithAttribute(SomeAttr attr)
{
PropertyInfo whichProperty = attr.Target;
}
(您也可以使用基類MemberInfo
來支持方法,字段等)
不可以。您只能以相反方式進行操作。您可以查詢屬性(通過反射)它具有的屬性:
Attribute.GetCustomAttributes(prop,true);
其中prop是從MemberInfo類派生的對象,該類描述屬性SomeProperty。接下來你遍歷返回的屬性,看它是否包含你的屬性。
你從哪裏得到SomeAttr「list」?從一個類型,不是? –
你是什麼意思? – Andrew
你想完成什麼? –