在编译时确保互斥接口?

Iai*_*oat 10 c# attributes custom-attributes compile-time

我想,以确保两个接口都从不在编译时相同的类,类似于如何发现AttributeUsage检查定制在编译时属性.

例如:

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

interface B {
    //...
}

class C : A, B { //should throw an error on compile time
    //...
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*ens 6

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