1
構造一般I類有在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 .. 我在做什麼錯誤?
'公共接口IDatabaseReader:IDatabaseReader',這是不對的。請徹底重讀您的問題。那裏有很多錯誤,這使我們很難解釋你的問題。 – Steven
對不起,現在解決了。 – TheFastCat
我從來沒有和Ninject合作過,所以我不知道你在做什麼。但是會綁定一個封閉的類型的工作?像:'綁定(typeof(IDatabaseReader))。(typeof(DatabaseReader ))'? –
nawfal