gpt4 book ai didi

c# - 从 Unity Container 2.0 迁移到 Unity Container 5

转载 作者:行者123 更新时间:2023-11-30 15:55:55 24 4
gpt4 key购买 nike

因此,我的应用使用 Unity Container v2 进行依赖注入(inject)。现在我正在使用 NUGET 包将它迁移到 5+,但是我遇到了关于类解析的问题。

var searchClient = IocContainer.Resolve<DocumentSearch>();

给了我

非泛型方法“IUnityContainer.Resolve(Type, string, params ResolverOverride[])”不能与类型参数一起使用 App.Super.Web.App D:\Repo\git1601\App.Super。 Web.App\API\ApiControllers\DocumentsController.cs

我已经将导入从 Microsoft.Pratices.Unity 更改为 Unity 仅当包发生变化时,但它仍然无法正常工作。有什么想法吗?

最佳答案

这适用于从 NuGet (5.3.2) 下载的最后一个 Unity

using Unity;

namespace ConsoleApplication1
{
public class Foo
{
}

class Program
{
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
var f = container.Resolve<Foo>();
}
}
}

请注意 Resolve<T>是一种扩展方法,虽然它是在完全相同的命名空间 ( Unity) 中定义的,但您的编译器必须支持扩展方法。

您不是使用扩展方法不可用的非常旧的 C#2 编译器编译它吗?

另一个可能的原因是您没有 Unity.Abstractions在您的引用列表中。请注意,虽然 UnityContainer类型在 Unity.Container 中定义程序集,扩展方法在另一个程序集中定义(不过,从 NuGet 安装会同时安装这两个程序集)。

然后确保在您调用扩展方法的项目中引用了这两个程序集。

关于c# - 从 Unity Container 2.0 迁移到 Unity Container 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47716826/

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