Я использую VS2008 и хотел бы создать предупреждение / ошибку во время компиляции на основе пользовательских атрибутов свойства (если это возможно).
В настоящее время меня интересуют два случая:
[MyAttribute (typeof(MyClass)]
Где MyClass должен реализовывать интерфейс. В настоящее время я утверждаю это в конструкторе атрибута, однако это не облегчает отслеживание из-за характера трассировки стека:
public MyAttribute (Type MyClassType)
{
System.Diagnostics.Debug.Assert(typeof(MyInterface).IsAssignableFrom(MyClassType),
"Editor must implement interface: " + typeof(MyInterface).Name);
}
Второй случай, который меня интересует, это когда у меня есть тип, определенный в атрибуте, если этот тип реализует интерфейс, тогда должно отображаться предупреждение, если другой атрибут отсутствует.
т.е. if (MyClass.Implements (SomeInterface) &&! Exists (SomeAttibute)) {Создать предупреждение}
[MyAttribute(typeof(MyClass)]
// Comment next line to generate warning
[Foo ("Bar")]
Спасибо!