Чтобы вернуть значения (1-е требование), вам нужно будет преобразовать Action
внутри Dictionary
в Function
:
new Dictionary<string, Func<>>()
, поскольку это неявно приводит к возвращению TResult
,вам нужно будет указать, что вы возвращаете в качестве последнего параметра внутри самого определения Func
, и указав на первом месте передаваемый параметр (2-е требование).
Что, наконец, входит в
var stamps = new Dictionary<string, Func<Guid, Task<HttpResponseMessage>>>()
{
{ "emisores", new Func<Guid,Task<HttpResponseMessage>>(StampEmisor) },
{ "tipodocumento",new Func<Guid,Task<HttpResponseMessage>>(StampTipoDocumento)},
{ "plantillas", new Func<Guid,Task<HttpResponseMessage>>(StampPlantilla)},
{ "reglas", new Func<Guid, Task<HttpResponseMessage>>(StampRegla) }
};
Теперь, чтобы вызвать его , ожидаемо (3-е условие), просто вызовите .Invoke(id)
сawait
заявление.В этом случае return await
, потому что мы хотим вернуть предоставленное значение:
if (stamps.ContainsKey(entity))
return await stamps[entity].Invoke(id);