public interface ICommandService
{
void Handle(Command command);
void RegisterHandler<T>(Action<T> handler);
}
public class CampaignCommandHandler
{
.
.
.
public void Handle(RegisterCampaignCommand command)
{
//Some code here
}
.
.
}
現在、このように手動でハンドラーにコマンドを登録しています。
commandService.RegisterHandler<RegisterCampaignCommand>(campaignCommandHandler.Handle);
多くのコマンドがあり、それぞれが CampaignCommandHandler クラスにハンドル関数を持っています。
var handles = campaignCommandHandler.GetType().GetMethods().Where(x => x.Name == "Handle");
foreach (var handle in handles)
{
var command = handle.GetParameters().FirstOrDefault(x => x.ParameterType.BaseType == typeof(Command));
// This is something, I want to do, which is obviously not the right as is
commandService.RegisterHandler<command.GetType()>(GetActionfromMethodInfo(handle));
}
上記を実行しようとしていますが、リフレクションを使用してそれを行う方法がわかりません。誰かがこれについて私を導くことができるかどうか疑問に思っていました。
ありがとう。