Castle Windsor:没有目标的动态代理的XML配置

时间:2010-08-12 07:40:30

标签: c# proxy castle-windsor

情况: 我有一个界面,比如

public interface ITestClass
{
    string StringElement { get; }
}

有一个实现:

public class TestClassImplementor :
    ITestClass
{
    public string StringElement
    {
        get { return "AAA"; }
    }
}

我有一个创建实现实例的工厂:

    public class TestClassFactory
    {
    public ITestClass Create()
    {
    return new TestClassImplementor();
    }
}

我希望能够使用Castle Windsor配置文件(XML)解析实现,但同时不配置接口的实现。

为什么需要:解析(网络)服务。我有一个(Web)服务接口,但我不访问该实现,因为它在另一个组件上。我希望能够简单地键入MyCastleUtility.Resolve<ITestClass>()并获得准备好的Web服务。我想使用Castle Windsor配置文件(XML)来配置我正在尝试访问的服务。

问题:如果我无法访问实现,我无法在配置文件中配置它。

到目前为止我尝试过的事情: 1)工厂。

        <component id="mycompfactory"
  type="MyTestProject.TestClassFactory, MyTestProject"/>

        <component id="mycomp"
          type="MyTestProject.ITestClass, MyTestProject"
          factoryId="mycompfactory" factoryCreate="Create" />

我确实得到了: Castle.MicroKernel.ComponentRegistrationException:类型MyTestProject.INewTestClass是抽象的。因此,无法将其实例化为MyTestProject.INewTestClass服务的实现

2)代理。试图找到一种方法来配置“必须为'ITestClass'接口创建代理”时,碰壁“。

目标:配置Castle Windsor以创建接口实现,而无需直接访问实现接口的类。

非常感谢帮助, 加斯

1 个答案:

答案 0 :(得分:1)

对于工厂方法:

  1. 您是否还在配置中配置了FactoryFacility?

  2. 在你的“mycomp”中,我认为你想要使用“服务”而不是“打字”:

  3. <component id="mycomp" service="MyTestProject.ITestClass, MyTestProject" factoryId="mycompfactory" factoryCreate="Create" />