我一直在使用Reflections並希望獲取爲屬性聲明的所有屬性。 PropertInfo
級別下有兩個屬性,分別爲CustomAttributes
和Attributes
。屬性與PropertyInfo中的自定義屬性
按照MSDN,它們被解釋如下:
屬性:
此屬性表示與部件相關聯的屬性。所有 成員都有一組屬性,這些屬性是根據特定類型的成員定義的。屬性屬性讓用戶知道如果 這個屬性是默認屬性,一個SpecialName屬性等等 。
注:在PropertyInfo.Attributes
頁面給出的示例代碼甚至不工作。
自定義屬性:
包含如果沒有屬性定義的所有應用到該 構件,或具有零個元素的數組的自定義特性的數組。
然而,當我運行此代碼對他們來說,Attributes
回報什麼,而CustomAttributes
回報Required
。
void Main()
{
var attributes = typeof(Myproperty).GetProperty("Caption").CustomAttributes;
//var attributes = typeof(Myproperty).GetProperty("Caption").Attributes;
attributes.Dump(); //Dump is a LinqPad method which dumps everything to the outpu window
}
public class Myproperty
{
private string caption = "Default caption";
[Required]
public string Caption
{
get{return caption;}
set {if(caption!=value) {caption = value;}
}
}
}
基本上它們在這裏的含義略有不同。這聽起來像你想要CustomAttributes。 –
我發現我想要的是'CustomAttributes',但是你能解釋一下它有什麼區別嗎?國際海事組織似乎並沒有按照其名稱的意思去做。 – Tarik
基本上,請參閱Hans的回答。他們是完全不同的東西。看一下MethodInfo.Attributes,這個例子對你來說可能更有意義 - 它更像是可以應用於屬性/方法等的修飾符。 –