Кто-то может дать мне пример использования Attribute.isDefined (), чтобы проверить, был ли атрибут местного обычая применен к данному классу?
Я проверил MSDN, но только вижу, что возможности для атрибутов относились к блокам, участники и т.д. Я также открыт для альтернативных методов для достижения того же самого!
Простой пример:
using System;
using System.Diagnostics;
[Foo]
class Program {
static void Main(string[] args) {
var ok = Attribute.IsDefined(typeof(Program), typeof(FooAttribute));
Debug.Assert(ok);
}
}
class FooAttribute : Attribute { }
Кажется, нет перегрузки Attribute.IsDefined
, которая принимает Type
.
Вместо этого можно вызвать Type.GetCustomAttributes
:
if (typeof(SomeClass).GetCustomAttributes(typeof(SomeAttribute), false).Length > 0)
Класс Type
наследует MemberInfo
.
Следовательно, вы можете использовать перегрузку , которая принимает MemberInfo
:
if (Attribute.IsDefined(typeof(SomeClass), typeof(SomeAttribute))