c# – Castle Windsor IoC Property Injection简单的操作方法
发布时间:2020-12-15 08:41:59 所属栏目:百科 来源:网络整理
导读:好吧我觉得关于Castle Windsor的信息可能太多了,因为寻找这些关键字给了我一切的例子,坦率地说,我对它如何正确解决这个问题的理解不够.在这一点上,我尝试了很少的运气. 我有一个IUnitOfWorkFactory,我想将其实例化为单例.所以,我安装了Castle Windsor,写了一
好吧我觉得关于Castle Windsor的信息可能太多了,因为寻找这些关键字给了我一切的例子,坦率地说,我对它如何正确解决这个问题的理解不够.在这一点上,我尝试了很少的运气.
我有一个IUnitOfWorkFactory,我想将其实例化为单例.所以,我安装了Castle Windsor,写了一些像这样的代码: iocContainer = new WindsorContainer() .Install(FromAssembly.This()); var propInjector = iocContainer.Register( Component.For<IUnitOfWorkFactory>() .LifestyleSingleton() .Instance(new NHUnitOfWorkFactory()) ); propInjector.Resolve<IUnitOfWorkFactory>(); 这是从我的Application_Start方法调用的. 我有一个AccountController连线如下: public class AccountController : SecureController { public IUnitOfWorkFactory UnitOfWorkFactory { get; set; } ... ……据我所知,这应该只是“工作”(虽然不要问我怎么做).但是当我尝试使用它时,我的属性总是为null. 好像我错过了一些愚蠢而简单的东西,但我不知道它是什么. 我也试过了 var propInjector = iocContainer.Register( Component.For<IUnitOfWorkFactory>() .ImplementedBy<NHUnitOfWorkFactory>() .LifestyleSingleton() ); 没有成功. 我究竟做错了什么? 结论 我在这里错过了几个步骤.我已经为tutorial构建了一个安装程序和一个引导程序,但是在构建控制器工厂之前,我在错误的位置注册了我的服务.现在我的引导程序看起来像这样: iocContainer = new WindsorContainer() .Install(FromAssembly.This()); var controllerFactory = new WindsorControllerFactory(iocContainer.Kernel); ControllerBuilder.Current.SetControllerFactory(controllerFactory); iocContainer.Register( Component.For<IUnitOfWorkFactory>() .ImplementedBy<NHUnitOfWorkFactory>() .LifestyleSingleton() ); ……我的房产注射不再是空的……现在我只需要调试其他87个问题…… 解决方法
当容器解析根对象时,构造函数和属性注入都起作用.在这种情况下,yourAccountController将是Windsor需要创建的根对象.
为了进行连接,您应该使用controller factory.一旦控制器被容器注册并解析,一切都应该按预期工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |