Me gustaría asegurar que dos interfaces nunca se encuentran en la misma clase en tiempo de compilación, similar a cómo AttributeUsage cheques atributos personalizados en tiempo de compilación.¿Asegurar interfaces mutuamente excluyentes en tiempo de compilación?
ej .:
[InterfaceUsage(MutuallyExclusive = typeof(B))]
interface A {
//...
}
interface B {
//...
}
class C : A, B { //should throw an error on compile time
//...
}
que, obviamente, puede hacer esto en tiempo de ejecución con la reflexión, pero estoy interesado en una solución en tiempo de compilación.
Me imagino que uno probablemente no exista de fábrica, pero ¿hay alguna manera de crear un atributo personalizado que se ejecute en tiempo de compilación, al igual que AttributeUsage?
No con sólo el normal compilador de C# ... –
Se puede construir una regla de FxCop. – Steven
Curioso por entender el caso de uso que requiere interfaces mutuamente excluyentes ... –