在编译时确保互斥接口?

时间:2011-05-09 12:54:33

标签: c# attributes custom-attributes compile-time

我想确保在编译时永远不会在同一个类上找到两个接口,类似于AttributeUsage在编译时检查自定义属性的方式。

e.g:

[InterfaceUsage(MutuallyExclusive = typeof(B))]
interface A {
    //...
}

interface B {
    //...
}

class C : A, B { //should throw an error on compile time
    //...
}

我显然可以在运行时使用反射来完成此操作,但我对编译时解决方案很感兴趣。

我认为一个可能不存在开箱即用 - 但有没有办法创建一个在编译时运行的自定义属性,就像AttributeUsage一样?

2 个答案:

答案 0 :(得分:5)

另一种方法可能是将它们更改为抽象类。

答案 1 :(得分:2)

如何为他们提供两个具有相同签名但不兼容的返回类型的方法?