1

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

public class DatabaseReader<T> : IDatabaseReader<T> 
{
    public DatabaseReader(IDatabaseReader databaseReader){...}
}

私が使用しているバインディングは次のとおりです。

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

しかし、カーネルは null を返します。何が間違っているのでしょうか?

4

1 に答える 1