小编Ale*_*ens的帖子

Async等待如何使用返回值

我有一个我从另一个开发人员继承的Windows服务,它运行速度非常慢,并且对eBay API有很多慢速调用.我希望在没有太多重构的情况下加快速度.

我刚刚开始考虑使用c#async/await尝试使用这些慢速调用来运行异步.这就是我想要实现的目标:

我有一个非常繁忙的方法,可以进行如下调用:

getProducts
getCategories
getVehicles
getImages
Run Code Online (Sandbox Code Playgroud)

我的想法是我可以简单地将方法更改为async并添加Task<T>到返回类型,如下所示:

public async Task<String> ProcessAdditionalProductDetialsAsync(ItemType oItem)
{
    String additionalProductDetails = string.Empty;

    if (oItem.ItemSpecifics.Count > 0)
    {
        foreach (NameValueListType nvl in oItem.ItemSpecifics)
        {                  
            if (nvl.Value.Count > 0)
            {
                foreach (string s in nvl.Value)
                {
                    additionalProductDetails += "<li><strong>" + nvl.Name + ":</strong>&nbsp;" + s + "</li>";
                }
            }
        }
    }
    return additionalProductDetails;
}
Run Code Online (Sandbox Code Playgroud)

然后等待调用它们:

Task<String> additionalProductDetials = ebayPartNumbers.ProcessAdditionalProductDetialsAsync(item);
Task<PartNumberCollection> partNumberCollection = ebayPartNumbers.ProcessPartNumbersAsync(item); 


await Task.WhenAll(partNumberCollection, additionalProductDetials);
Run Code Online (Sandbox Code Playgroud)

如何获取返回的类型以便我可以使用它们?我尝试过只使用partNumberCollection但它只有await可用的属性.

c# async-await

19
推荐指数
3
解决办法
5万
查看次数

改进单元测试到大型解决方案,IOC,Moq

我正在改进用VB.Net和c#编写的asp.net解决方案的单元测试.单元测试需要验证当前的功能,并检查未来的重大变化.

该解决方案包括:

1个用vb.net编写的MVC web项目(不要问,这是遗产)

10个其他支持项目,每个项目包含用C#编写的逻辑分组功能,每个项目包含存储库和DAL

所有类都是紧密耦合的,因为在任何地方都没有实现控制反转(IOC).

目前要测试控制器有以下堆栈:

  • 调节器
    • 知识库
      • DAL
        • 记录

第一个问题,为了正确地进行单元测试,我会设置1个测试项目并从中运行所有测试,还是应该为每个项目设置1个测试项目来测试该DLL的功能?

第二个问题,我是否需要实施IOC才能使用MOQ?

第三个问题,是否有可能将IOC重构为这样一个巨大的解决方案?

第四个问题,有什么其他选择可以尽快完成这项工作?

c# vb.net unit-testing dependency-injection inversion-of-control

1
推荐指数
1
解决办法
178
查看次数