当我使用此注册时:
container.Register(
Component
.For<IFooFactory>()
.ImplementedBy<FooFactory>(),
Component
.For<IFoo>()
.UsingFactoryMethod(kernel => kernel.Resolve<IFooFactory>().CreateFoo())
);
我得到这个异常(exception):
Castle.MicroKernel.ComponentRegistrationException: Type MyNamespace.IFoo is abstract. As such, it is not possible to instansiate it as implementation of MyNamespace.IFoo service
我不太确定问题是什么。但是堆栈跟踪显示,在“DefaultComponentActivator.CreateInstance()”中,以下条件成功,然后抛出错误:
if (createProxy == false && Model.Implementation.IsAbstract)
我在这里需要某种代理吗?
是不是注册错了?
最佳答案
从消息看来您还没有注册 IFooFactory
.
您还需要添加对工厂方法的支持。只需在进行注册之前调用它:
container.AddFacility<Castle.Facilities.FactorySupport.FactorySupportFacility>();
关于caSTLe-windsor - 温莎城堡 : UsingFactoryMethod can't instantiate with a weird error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1837893/