我是 windsor 菜鸟,我在依赖注入(inject)工作时遇到了一些问题。我正在使用 asp.net 网络应用程序。
我做了以下事情
public interface IHandler{
...
}
public class Handler : IHandler{
...
}
然后我尝试在 global.asax application_start 中注册代码
container.Register(Component
.For(typeof(IHandler))
.ImplementedBy(typeof(Handler))
.Named("handler"));
当我想使用 Handler 时,我会创建一个属性
public IHandler handler{get;set;}
但是当我尝试使用它时,它是空的?为什么?我错过了什么吗?
最好的问候
更新
我唯一要注册/解决的事情如下:
container.Register(Component
.For(typeof(IHandler))
.ImplementedBy(typeof(Handler))
.Named("handler"));
和:
container.Resolve<IHandler>();
我是否需要做其他事情,运行此 att 应用程序启动是否有效?
更新 2
问题会不会因为我试图在 ascx 控件上进行依赖注入(inject)而出现?
最佳答案
确保具有 IHandler 属性的组件也在 Windsor 中注册(并解析)。
您说这是针对 ASP.NET 应用程序的。 Windsor 组件的默认生活方式是单例。您确定要这样共享此组件吗?您可能需要此组件的短暂或每个网络请求的生活方式。
关于dependency-injection - CaSTLe温莎属性(property)注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888784/