.net 注册非变体

.net 注册非变体,.net,dependency-injection,covariance,simple-injector,.net,Dependency Injection,Covariance,Simple Injector,我有一个界面: interface IDataHoldingSession<out T> 接口IDataHoldingSession 我想做以下工作: container.RegisterAll<IDataHoldingSession<object>>( typeof(IDataHoldingSession<DbContext>), typeof(IDataHoldingSession<PrincipalContext&

我有一个界面:

interface IDataHoldingSession<out T>
接口IDataHoldingSession
我想做以下工作:

container.RegisterAll<IDataHoldingSession<object>>(
    typeof(IDataHoldingSession<DbContext>), 
    typeof(IDataHoldingSession<PrincipalContext>));
container.RegisterAll(
类型(IDataHoldingsSession),
类型(IDataHoldingsSession));
但是,此操作失败,出现以下例外情况:

System.ArgumentException:提供的类型
IDataHoldingSession
未实现
IDataHoldingSession


修复此问题的最合适方法是什么?

在当前的Simple Injector 2.3版本中,您所经历的行为可以被视为一个bug。我们正在努力推出2.4,我将确保在即将发布的2.4版本中修复此问题。框架中还有更多地方不检查各种类型

同时,您可以使用以下变通方法:

container.RegisterAll(类型为(IDataHoldingSession),
Lifestyle.Transient.CreateRegistration(
()=>container.GetInstance(),container),
Lifestyle.Transient.CreateRegistration(
()=>container.GetInstance(),container));
更新

已被释放。此版本修复了此错误