0

他のプロトコルをカプセル化するプロトコルをモデル化するジェネリック クラスがあります。すべてのプロトコルは特定のインターフェイスを実装しますが、現実の世界では他の組み合わせが存在しないため、このジェネリック クラスにはこれらのプロトコルのうちの 2 つのうちの 1 つだけを含める必要があります。

許可された 2 つのクラスを指定する方法はありますか?

現在私は持っています:

public class ProtocolEncapsulator<TContainedCommand> : IBaseCommand where TContainedCommand : IBaseCommand 

しかし、これにより、フレームワークのユーザーは無意味な組み合わせを作成できます。

ありがとう

4

1 に答える 1

2

2 つのプロトコルによってのみ実装されるインターフェイスを作成し、型制約を使用して問題のメソッドを制限することをお勧めします。

何かのようなもの:

public interface IExclusiveCommand : IBaseCommand
{
    void ExclusiveMethod();  //Not necessary if there are no differences between Base and Exclusive
}

public class ProtocolEncapsulator<TContainedCommand> : IBaseCommand where TContainedCommand : IExclusiveCommand
{
}

別のインターフェイスが追加され、複雑さが増しているように見えるかもしれませんが、実際には物事をより明確かつ明確にすることで物事を単純化していると私は信じています。また、コンパイル時の制限により、保守が容易になり、トラブルシューティングが容易になります。

于 2013-04-25T15:07:37.160 に答える