0

我有一个特定的工厂,它创建(在它自己的程序集中)一些接口实现:

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类型需要它。

我怎样才能绑定到那种方法?

4

1 回答 1

1

你不能。ToConstructor期望一个构造函数,例如GenericDataSource<MyData>()它不能与开放泛型一起使用。改为使用WithConstructorArgument

于 2012-11-12T12:35:34.880 回答