2
を使用して、オーバーロードされたメソッドを呼び出すと、私はオーバーロードされたメソッドの数を持つクラスを持っている:ジェネリック
public class CustomerCommandHandlers
{
public void Handler(ChangeNameCommand command)
{
...
}
public void Handler(ChangeAddressCommand command)
{
...
}
}
私は次のメソッドが含まれている:
私からのオーバーロードされたメソッドを呼び出すことができますpublic void Handle<TCommand>(TCommand command) where TCommand : ICommand
{
Handler((dynamic)command);
}
をコマンドとコマンドハンドラを登録する別のクラス。
しかし、私はProductCommandHandlers、InventoryCommandHandlersなどの他のcommandHandlerを作成するので、私は各クラスに動的メソッドを含めたくありません。
このメソッドを含むすべてのコマンドハンドラの基本クラスを作成する方法はありますか?そして、このメソッドを基本クラスから呼び出すことはできますか?
おかげ
絶対に華麗な。まさに私が探していたもの。フォールバックは何ですか? –
動的なので、パラメータのタイプの実装があるかどうかはわかりません。 CommandThatYouHaveNoHandlerForを渡すと、RuntimeBinderExceptionが発生します。どちらかを処理するか、フォールバックハンドラを使用して独自のデフォルト処理を実装します。 EDIT:あなたの例に合った答えを修正しました – Botz3000
ありがとうございました。 –