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