我们能否在.NET Core 3中使用Lamar解析使用接口的其他实现的接口实现?

问题描述 投票:0回答:1

我正在使用.NET Core 3.0,并且具有以下类

public class DataProviderA: IDataProvider { }
public class DataProviderB: IDataProvider { }

public class DataProviderCombined: IDataProvider { 
      public DataProviderCombined(IDataProvider providerA, IDataProvider providerB) { ... }
}

在我的[[Startup.cs中,我注册了以下服务:

services.AddTransient<IDataProvider, DataProviderCombined>(); services.ForConcreteType<DataProviderCombined>().Configure.Scoped() .Ctor<IDataProvider>("providerA").Is<DataProviderA>().Transient() .Ctor<IDataProvider>("providerb").Is<DataProviderB>().Transient();
由于出现以下错误,这似乎无法正确解决:

Lamar.IoC.LamarException:无法建立注册的实例“ IDataProvider”的dataProvider:检测到双向依赖性:

在Lamar中缺少我无法在.NET Core 3中进行注册的注册文件吗?

.net asp.net-core dependency-injection structuremap lamar
1个回答
0
投票
在构造函数中参数为providerb的情况下,看起来像providerB错字。

在所示示例中似乎还存在冲突的范围

我建议以下内容

services.For<IDataProvider>.Use<DataProviderCombined>().Configure.Scoped() .Ctor<IDataProvider>("providerA").Is<DataProviderA>().Transient() .Ctor<IDataProvider>("providerB").Is<DataProviderB>().Transient();

© www.soinside.com 2019 - 2024. All rights reserved.