私は次の基本インターフェースを持っています
public interface IHandler{
void Handle(IMessage message);
}
およびベースインターフェイスを継承する汎用インターフェイス
public interface IHandler<TMessage> : IHandler where TMessage : IMessage{
void Handle(TMessage message);
}
IHandler<TMessage>
私のクラスは、インターフェースを複数回実装できます。IMessage
はメッセージの基本インターフェースであり、ここでは関係ありません。現在、私は次のようにインターフェースを実装しています。
public class ExampleHandler : IHandler<ExampleMessage>, IHandler<OtherExampleMessag>{
void IHandler.Handle(IMessage message){
ExampleMessage example = message as ExampleMessage;
if (example != null) {
Handle(example);
}
else {
OtherExampleMessage otherExample = message as OtherExampleMessage;
if (otherExample != null) {
Handle(otherExample);
}
}
public void Handle(ExampleMessage) {
//handle message;
}
public void Handle(OtherExampleMessage) {
//handle message;
}
}
私を悩ませているのは、メソッドを実装するHandle(IMessage)
方法であり、私の意見では多くの冗長なコードを引き起こしIHandler<TMessage>
、クラスに新しいインターフェイスを実装するたびにメソッドを拡張する必要があります。
私が探しているのは、メソッドを実装するためのより一般的なHandle(IMessage)
方法です(おそらく、ハンドラーの基本クラスにあります)が、現在、その方法に固執しています。