asp.net核心不是依赖注入.net framework 4.5.1库

时间:2019-07-08 21:07:05

标签: asp.net-core dependency-injection asp.net-core-webapi asp.net-core-2.1

我有一个旧应用程序,该应用程序以WCF作为入口点,并且它依赖注入在.net Framework 4.5.1项目中创建的接口。我试图用asp.net核心替换wcf层,当我尝试使用asp.net核心的默认DI进行依赖注入时,我得到

  

异常是:InvalidOperationException-当前类型xxxx是接口,不能构造。您是否缺少类型映射?

我在具有目标框架4.6.1的Asp.net核心2.2以及目标框架设置为.net核心2.1的asp.net核心2.1中进行了尝试

我在asp.net核心中的DI设置如下所示

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        services.AddSingleton<ITradeBusinessService, TradeBusinessService>();
        services.AddSingleton<IUnityContainer, UnityContainer>();
        services.AddSingleton<ICommonDataRepository, CommonDataRepository>();
    }

此服务TradeBusinessService在构造函数中采用IUnityContainer。

        public TradeBusinessService(IUnityContainer objectContainer)
    {
        container = objectContainer;
        commonRepository = container.Resolve<ICommonDataRepository>();

,当我尝试解析ICommonDataRepository时,出现上述错误。

ICommonDataRepository位于目标为4.5.1的项目中

有什么想法我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

UnityContainer仅仅是Asp.net Core的Dependency Injection之类的另一个DI框架。为什么同时需要两者?无论如何,问题在于您要收缩新的空的统一容器并将其注入TradeBusinessService中。它没有注册ICommonDataRepository类型。我的建议是,摆脱UnityContainer,而直接在ICommonDataRepository中注入TradeBusinessService