[英]Registering a class from an unreferenced assembly with castle windsor
我已经将所有的windsor安装程序与他们自己的IOC组件分离。 可以从未引用的程序集中注册类型。
container.Register(
Classes
.FromAssemblyNamed("MyProject.Web")
.BasedOn<IController>()
.LifestylePerWebRequest(),
Classes
.FromAssemblyNamed("MyProject.Web")
.BasedOn<IBaseHttpModule>()
.LifestylePerWebRequest()
);
这对我来说很好,但我想明确说明我的模块注册的顺序。
我已经尝试了以下但是已经认为这不起作用,因为MyProject.Web无法在我的IOC dll中引用,因为这会创建循环依赖。
container.Register(
Component
.For<IBaseHttpModule>()
.ImplementedBy(Type.GetType("MyProject.Web.Modules.AuthenticationModule, MyProject.Web"))
.LifestylePerWebRequest()
);
有没有办法让这种东西与windsor一起工作,我在对象浏览器中搜索了文档和dll,但我没有找到任何看起来像是我的解决方案。
你尝试过这样的事吗?
container.Register(
Classes
.FromAssemblyNamed("MyProject.Web").Where(t => t.FullName == "MyProject.Web.Modules.AuthenticationModule").
.BasedOn<IBaseHttpModule>()
.LifestylePerWebRequest()
使用安装程序工厂来控制注册顺序。
你可以在未引用的程序集中创建一个安装程序,然后让Castle Windsor选择它:
container.Install(FromAssembly.Named("MyProject.Web"));
我认为这是一种更简洁的方法,因为你不处理在另一个程序集中注册实现,他们自己做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.