Je viens modifié une méthode pour gérer mes commandes de DDD (il avait auparavant aucun type de retour):Est-il possible de nettoyer la méthode générique suivante en utilisant l'une des nouvelles fonctionnalités C# 4?
public static CommandResult<TReturn> Execute<TCommand, TReturn>(TCommand command)
where TCommand : IDomainCommand
{
var handler = IoCFactory.GetInstance<ICommandHandler<TCommand, TReturn>>();
return handler.Handle(command);
}
La méthode est très bien, et fait ce que je veux faire, mais l'utiliser crée des fugly Code:
CommandResult<Customer> result =
DomainCommands.Execute<CustomerCreateCommand, Customer>
(
new CustomerCreateCommand(message)
);
Avant ajouté le type Customer
de retour TReturn
, il était agréable et bien rangé et la méthode pourrait déduire les types de son utilisation. Cependant, ce n'est plus possible.
Y at-il moyen d'utiliser de nouvelles fonctionnalités C# que je pourrais réécrire ci-dessus pour le rendre plus net, c'est-à-dire en utilisant Func, Action, Expression, etc? Je m'attends probablement à l'impossible, mais je commence à en avoir marre d'écrire autant de code pour appeler une seule méthode qui était très simple.