12

ジェネリック クラスの非ジェネリック バージョンを実装したいと考えています。このような。

public class ServerSentEvent : ServerSentEvent<NoAdditionalClientInformation>

public class ServerSentEvent<ClientInfo> : IServerSentEvent

これを解決するには、ダミー/空のクラス - NoAdditionalClientInformation を作成する必要がありました。

空のクラスなしでこれを行う別の方法はありますか?

4

1 に答える 1

11

通常は、逆の方法で行います。

public class ServerSentEvent : IServerSentEvent
{}

public class ServerSentEvent<ClientInfo> : ServerSentEvent
{}

このように、ジェネリック バージョンは非ジェネリック バージョンのより詳細なサブタイプであり、より多くの情報を入れることができますが、非ジェネリック タイプが期待される場合はいつでもジェネリック タイプを使用できます。

あなたが提案したようにする場合は、デフォルトのタイプを指定する必要があります。デフォルトの順序が思いつかない場合は、おそらく順序が間違っている可能性がありますが、一般的にはケースに依存する可能性があります。

于 2013-01-16T07:24:26.673 に答える