10

AttributeUsageがコンパイル時にカスタム属性をチェックする方法と同様に、コンパイル時に2つのインターフェイスが同じクラスで検出されないようにしたいと思います。

例えば:

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

interface B {
    //...
}

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

実行時にリフレクションを使用してこれを実行できることは明らかですが、コンパイル時のソリューションに興味があります。

箱から出してすぐには存在しないと思いますが、AttributeUsageのように、コンパイル時に実行されるカスタム属性を作成する方法はありますか?

4

2 に答える 2

7

別のアプローチは、それらを抽象クラスに変更することです。

于 2011-05-09T13:34:39.000 に答える
2

署名は同じであるが、戻り型に互換性のない2つのメソッドを与えるのはどうですか?

于 2011-05-09T13:03:33.230 に答える