我正在使用.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中进行注册的注册文件吗?
providerb
的情况下,看起来像providerB
错字。在所示示例中似乎还存在冲突的范围
我建议以下内容
services.For<IDataProvider>.Use<DataProviderCombined>().Configure.Scoped()
.Ctor<IDataProvider>("providerA").Is<DataProviderA>().Transient()
.Ctor<IDataProvider>("providerB").Is<DataProviderB>().Transient();