Ninject:从非泛型构造泛型类

时间:2013-11-03 16:34:45

标签: c# generics ninject

我在Ninject中有以下层次结构:

public interface IReader {}
public interface IReaderAsync {}

public class Reader: IReader{}
public class ReaderAsync : IReaderAsync{}

public interface IDatabaseReader : IReader, IReaderAsync {}

public class DatabaseReader : IDatabaseReader
{
    public DatabaseReader(IReader reader, IReaderAsync readerAsync){...}
}

使用这些绑定在Ninject中按预期绑定,构造和加载这些类:

Bind(typeof(IReader)).To(typeof(Reader));
Bind(typeof(IReaderAsync)).To(typeof(ReaderAsync));
Bind(typeof(IDatabaseReader)).To(typeof(DatabaseReader));

另外,我有一个单独的类,它是从IDatabaseReader

构造的(soley)
public class DatabaseReader<T> : IDatabaseReader<T> 
{
    public DatabaseReader(IDatabaseReader databaseReader){...}
}

我正在使用的绑定是:

// open binding
Bind(typeof(IDatabaseReader<>)).To(typeof(DatabaseReader<>));
...
Kernel.TryGet<IDatabaseReader<TestEntry>>();

但内核返回null .. 我做错了什么?

1 个答案:

答案 0 :(得分:0)

在重建了一个单独的,更简单的问题impl并证明它会加载后,我意识到我没有加载我认为我在运行时的Ninject绑定。所以问题解决了:用户问题。