我有一个有多个重载方法的类:
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);
}
允许我从另一个注册命令和命令处理程序的类中调用重载方法。
但是,当我创建其他commandHandlers(如ProductCommandHandlers,InventoryCommandHandlers等)时,我不想在每个类中包含动态方法。
有没有办法可以为每个包含此方法的命令处理程序创建基类,然后我可以从基类调用此方法?
由于
答案 0 :(得分:4)
如果您已经在使用动力学,那么您可以尝试将其作为基类:
public class Basehandler
{
public void Handle<TCommand>(T command) where TCommand : ICommand {
((dynamic)this).Handler(command);
}
// As fallback if there is no implementation for the command type
public void Handler(ICommand val) {
// You could implement default or error handling here.
Console.WriteLine(val == null ? "null" : val.GetType().ToString());
}
}