我的同事在我们的项目中设置了一个 Windsor TypedFactoryFacility。
我是 Windsor 的新手,不明白它是如何实现我们注册为工厂的 IServiceFactory 接口中的方法的。当我看到一个接受类型参数 T 并返回 T 的 Create 方法时,我认为它可能在后台调用了容器的 Resolve 方法。
我需要一个以 Type 作为参数并返回一个对象的 Create 重载。由于容器的 Resolve 方法具有这两种风格:
T Resolve<T>(string key);
object Resolve(Type service);
我认为添加 Create 的重载会起作用。相反,它似乎试图解析 System.Object 而不是我传入的类型。
有没有办法让 Windsor 以我想要的方式实现我的 Create 方法?我已经用反射器戳了一下,但无法弄清楚。
这是注册:
container.AddFacility<TypedFactoryFacility>();
container.Register(
Component.For<IServiceFactory>()
.AsFactory()
.LifeStyle.Transient);
和界面本身:
public interface IServiceFactory
{
//Original Create method that works
T Create<T>();
//The overload that I need that throws an exception
object Create(Type service)
void Release(object service);
}