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
}