当我使用此注册时:
container.Register(
Component
.For<IFooFactory>()
.ImplementedBy<FooFactory>(),
Component
.For<IFoo>()
.UsingFactoryMethod(kernel => kernel.Resolve<IFooFactory>().CreateFoo())
);
我得到了这个例外:
Castle.MicroKernel.ComponentRegistrationException:类型MyNamespace.IFoo是抽象的。 因此,无法将其实例化为MyNamespace.IFoo服务的实现
我不确定问题是什么。但是堆栈跟踪显示在'DefaultComponentActivator.CreateInstance()'中,以下条件成功,然后抛出错误:
if (createProxy == false && Model.Implementation.IsAbstract)
我需要某种代理吗? 注册错了吗?
答案 0 :(得分:10)
从消息中看来,您尚未注册IFooFactory
。
此外,您需要添加对工厂方法的支持。在进行注册之前,请先调用它:
container.AddFacility<Castle.Facilities.FactorySupport.FactorySupportFacility>();