编程语言
首页 > 编程语言> > c#-Unity中RegisterInstance的最新版本

c#-Unity中RegisterInstance的最新版本

作者:互联网

在我们的项目中,我们使用Unity作为依赖项注入框架.现在,我面临一种情况,我需要IUnityContainer.RegisterInstance()的最新版本.

在ninject中,我正在尝试执行的代码如下所示:

this.Bind<IMyInterface>().ToMethod(context => GetMyObjectLateBound());

但是,到目前为止,在Unity中,我还没有找到一种方法.

我之所以需要这样做,是因为当时尚未创建IMyInterface的实例,发生了绑定,并且Unity也未处理对象的创建(而且我无法在短期内替换它).

解决方法:

Unity支持惰性.您需要添加以下扩展来统一:

unityContainer.AddNewExtension<LazySupportExtension>();

那么您可以执行以下操作:

unityContainer.RegisterType<IComponent, Component1>(); 
var lazyComponent = unityContainer.Resolve<Lazy<IComponent>>();

希望这可以帮助.

标签:late-binding,ninject,unity-container,c,net
来源: https://codeday.me/bug/20191102/1994175.html