C# 使用Castle Windsor将一个类注入到另一个类中
假设我有一本关于下列案例的书:C# 使用Castle Windsor将一个类注入到另一个类中,c#,dependency-injection,castle-windsor,C#,Dependency Injection,Castle Windsor,假设我有一本关于下列案例的书: public class ClassA : IClassA { //Contains methods } public interface IClassA { //Contains methods } 温莎城堡的定义如下: public class ServiceInstaller : IWindsorInstaller { public void Install(Castle.Windsor.IWindsorContainer c
public class ClassA : IClassA
{
//Contains methods
}
public interface IClassA
{
//Contains methods
}
温莎城堡的定义如下:
public class ServiceInstaller : IWindsorInstaller
{
public void Install(Castle.Windsor.IWindsorContainer container,
Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store)
{
container.Register(Castle.MicroKernel.Registration.Component.For<IClassA>().ImplementedBy<ClassA>());
}
}
如何配置Castle Windsor以创建ClassB类?我相信我有两个选择:
1) 配置CastleIndosor以创建注入ClassA的ClassB实例。类A应该在注入类B之前创建
2) 将零参数构造函数添加到ClassB并删除当前构造函数。然后使用setter注入将ClassA注入到ClassB中
我希望我可以使用选项1。可能相关:也许我不理解你的问题,但当你注册这两个类时,你可以像解析
IClassA
一样轻松解析IClassB
。Castle.Windsor在ClassB
中自动注入IClassA
。这是依赖注入的主要目的。@Rabban,我意识到,然而ClassB成员有默认值。我需要构造它们。你的代码没有显示任何默认值。你能澄清你的问题吗,我仍然不明白这个问题。可能相关:也许我不明白你的问题,但是当你注册这两个类时,你可以很容易地解决IClassB
,就像你解决IClassA
一样。Castle.Windsor在ClassB
中自动注入IClassA
。这是依赖注入的主要目的。@Rabban,我意识到,然而ClassB成员有默认值。我需要构造它们。你的代码没有显示任何默认值。你能澄清一下你的问题吗,我还是不明白这个问题。
public class ClassB : IClassB
{
private IClassA classA
public ClassA (IClassA classA)
{
this.classA=classA;
}
}
public interface IClassB
{
//Contains methods
}