(独自のアセンブリ内に)いくつかのインターフェース実装を作成する特定のファクトリを入手しました。
public static IDataSource<T> CreateDataSource<T>(DataContext dataContext) { ... }
nInject
そして、カーネルバインダー内で使用する必要があります。必要なバインディングはのようになりIDataSource<T> -> Factory.CreateDataSource<T>(dataContext)
ます。
しかし、問題は、以下がコンパイルされないことです:-
kernel.Bind(typeof(IDataSource<>))
.ToConstructor(ctx =>(Action<DataContext,>)Factory.CreateDataSource)
私は他の同様のことを試しましたが、それらをコンパイルすることもできません。いずれにせよ(私の推測では)、このT
ジェネリック型を指定する必要があります。
kernel.Bind(typeof(IDataSource<>))
.ToConstructor(ctx => Factory.CreateDataSource(ctx.Inject<DataContext>()))
T
そのタイプで必要なため、これでもコンパイルに失敗します。
どうすればそのようなメソッドにバインドできますか?