gpt4 book ai didi

c# - 如何将异步任务存储在字典中并根据配置值调用它们?

转载 作者:行者123 更新时间:2023-12-04 07:19:25 25 4
gpt4 key购买 nike

这是我的代码如下:

public interface IResponseEntity
{
}

public class ResponseEntity : IResponseEntity
{
public string Status { get; set; }
public string Message { get; set; }
public string Data { get; set; }
}

public class ObjectForRequest
{
public string abcd { get; set; }
public string xyz { get; set; }
public string pqrs { get; set; }
public short mnop { get; set; }
}

private async Task<IResponseEntity> Dowork_for_A(ObjectForRequest objReq)
{
//Code for A
....................
}

private async Task<IResponseEntity> Dowork_for_B(ObjectForRequest objReq)
{
//Code for B
....................
}

private async Task<IResponseEntity> Dowork_for_C(ObjectForRequest objReq)
{
//Code for C
....................
}

private async Task<IResponseEntity> Dowork_for_D(ObjectForRequest objReq)
{
//Code for D
....................
}

public async Task<IResponseEntity> method(ObjectForRequest objReq)
{
if (CONFIGVALUE == 'A')
return await Dowork_for_A(RequestOBJ);
else if (CONFIGVALUE == 'B')
return await Dowork_for_B(RequestOBJ);
else if (CONFIGVALUE == 'C')
return await Dowork_for_C(RequestOBJ);
else if (CONFIGVALUE == 'D')
return await Dowork_for_D(RequestOBJ);
else
return null;
}
好像现在我正在检查 if 条件中的配置值,然后调用异步任务来返回值。
如何设置 <key, value>一对字典作为配置值作为“键”和“值”作为异步任务?或者换句话说,这里如何将异步任务存储在字典中并根据配置值调用它们?

最佳答案

这是非常简单的。像这样声明你的字典:

    Dictionary<char, Func<ObjectForRequest, Task<IResponseEntity>>> _actions =
new Dictionary<char, Func<ObjectForRequest, Task<IResponseEntity>>>()
{
{ 'A', Dowork_for_A },
{ 'B', Dowork_for_B }
// ...
}
然后:
public async Task<IResponseEntity> method(ObjectForRequest objReq)
{
Func<ObjectForRequest, Task<IResponseEntity>> action;
if (!_actions.TryGetValue(CONFIGVALUE, out action))
{
return null;
}
return await action(objReq);
}
另外,请务必考虑这对性能的影响。字典对于大集合来说非常快,但如果你真的只有 3 或 4 个选项, switchif ... else链几乎肯定会更快。确切的临界点是什么时候 Dictionary变得更好很难说。

关于c# - 如何将异步任务存储在字典中并根据配置值调用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68596410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com