我知道我可以將以下通用接口與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
和朋友的反射黑客,但我想避免這種情況。
謝謝,這看起來很有希望,我很高興地看到,它沒有太多的代碼要麼:) –