我知道我可以将以下通用接口与ToFactory
方法绑定。Ninject.Extensions.Factory与非泛型类型参数
public interface IFoo {}
public interface IFooFactory {
TFoo Create<TFoo>() where TFoo : IFoo;
}
...
kernel.Bind<IFooFactory>().ToFactory();
此代码按预期工作。但是,如果我想使用非泛型变体,则会收到Ninject激活异常,因为它搜索IFoo
的绑定,所以看起来工厂扩展不能识别Type
参数。
public interface IFooFactoryWithType {
IFoo Create(Type concreteType);
}
...
kernel.Bind<IFooFactoryWithType>().ToFactory();
我做错了什么,还是不支持这种方式?在我目前的情况下,我不能使用通用版本,因为类型来自运行时参数。我可以用MakeGenericMethod
和朋友的反射黑客,但我想避免这种情况。
谢谢,这看起来很有希望,我很高兴地看到,它没有太多的代码要么:) –