作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码如下:
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 个选项,
switch
或
if ... else
链几乎肯定会更快。确切的临界点是什么时候
Dictionary
变得更好很难说。
关于c# - 如何将异步任务存储在字典中并根据配置值调用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68596410/
我是一名优秀的程序员,十分优秀!