Я хотел бы определить ограничение для моего пользовательского (PostSharp) атрибута. Моя цель - получить сообщение об ошибке или предупреждение во время компиляции, если класс X не реализует интерфейс Y , но у него есть мой атрибут.
Так что это должно работать:
[MyAttributeOnlyForY]
public class X : Y { ... }
но это должно нарушить процесс компиляции:
[MyAttributeOnlyForY]
public class X { ... }
Как это возможно?
Причина
Этот атрибут работает как аспект (это атрибут PostSharp ), и я хочу быть уверенным, что сплетенный класс предоставляет всю необходимую информацию для этого атрибута.
Я хочу избежать null результат на
(eventArgs.Instance as ILoggerServiceOwner)
и я думаю, что проверка времени - это хорошая практика.
Решение
Я нашел идеальное начало здесь: Проверка использования атрибутов с помощью PostSharp Аспекты