Генерация пользовательского предупреждения во время компиляции C#

StackOverflow https://stackoverflow.com/questions/1420143

Вопрос

Я использую 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.Реализует(SomeInterface) && !Существует (SomeAttibute)) { Сгенерировать предупреждение }

[MyAttribute(typeof(MyClass)] 
// Comment next line to generate warning
[Foo ("Bar")]

Спасибо!

Это было полезно?

Решение

Вы можете сделать это с помощью Постшарповый.

Я однажды уже делал это и объяснил, как это сделать здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top