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