Я хотел бы убедиться, что два интерфейса никогда не будут найдены в одном классе во время компиляции, аналогично тому, как AttributeUsage проверяет пользовательские атрибуты во время компиляции.
например:
[InterfaceUsage(MutuallyExclusive = typeof(B))]
interface A {
//...
}
interface B {
//...
}
class C : A, B { //should throw an error on compile time
//...
}
Я, очевидно, могу сделать это во время выполнения с отражением, но меня интересует решение во время компиляции.
Я полагаю, что такого, вероятно, не существует из коробки, но есть ли способ создать настраиваемый атрибут, который запускается во время компиляции, похоже на AttributeUsage?