Terinspirasi oleh pertanyaan SO. Kelas atribut memiliki beberapa kelebihan untuk metode IsDefined () . Tercakup adalah atribut yang diterapkan pada Majelis, Modul, MemberInfo, ParameterInfo. Overload MemberInfo mencakup PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
Itu menangani sebagian besar Target Attribute. Kecuali untuk satu biggy: tidak ada kelebihan untuk Attribute.IsDefined (Type, Type) sehingga Anda bisa memeriksa apakah atribut didefinisikan pada kelas. Atau struct, delegasi atau enum dalam hal ini.
Bukannya ini masalah nyata, Type.GetCustomAttributes () dapat memperbaikinya. Tetapi semua jenis BlahInfo juga memilikinya. Saya bertanya-tanya pada kurangnya simetri. Saya tidak tahu mengapa ini menjadi masalah untuk Type. Menebak masalah warisan tidak menjelaskannya kepada saya. Memiliki ValueType dalam campuran mungkin menjadi petunjuk, masih tidak masuk akal. Saya tidak membeli "mereka lupa", mereka tidak pernah melakukannya.
Mengapa kelebihan ini hilang?
sumber
ICustomAttributeProvider
membuat banyak akal juga.