Я только что изменил метод для обработки моих команд DDD (ранее у него не было возвращаемого типа):
public static CommandResult<TReturn> Execute<TCommand, TReturn>(TCommand command)
where TCommand : IDomainCommand
{
var handler = IoCFactory.GetInstance<ICommandHandler<TCommand, TReturn>>();
return handler.Handle(command);
}
Метод в порядке, и он делает то, что я хочу, однако использую егосоздает какой-то бесполезный код:
CommandResult<Customer> result =
DomainCommands.Execute<CustomerCreateCommand, Customer>
(
new CustomerCreateCommand(message)
);
До того, как я добавил Customer
тип возвращаемого значения TReturn
, он был хорош и опрятен, и метод мог вывести типы из его использования.Однако это уже невозможно.
Есть ли способ использовать какие-либо новые функции C #, которые я мог бы переписать выше, чтобы сделать его более аккуратным, например, используя Func, Action, Expression и т. Д.?Я, вероятно, ожидаю невозможного, но мне надоело писать так много кода, чтобы просто вызывать один метод, который раньше был очень простым.