實例我不明白ninject單身的這種行爲。這是一個簡單的例子。如何獲得ninject傳遞到構造
void Main()
{
IKernel kernel = new StandardKernel();
kernel.Bind<IB>().To<B>().InSingletonScope();
kernel.Bind<B>().To<B>().InSingletonScope();
C c = kernel.Get<C>();
B b = kernel.Get<B>();
B b2 = kernel.Get<B>();
ReferenceEquals(c.b, b); //false
ReferenceEquals(b, b2); //true
}
public interface IB
{ }
public class B : IB
{ }
public class C
{
public IB b;
public C(IB b)
{
this.b = b;
}
}
我不明白爲什麼ReferenceEquals(c.b, b)
返回false。
我會假設,如果我聲明一個對象作爲單身然後ninject將只使用對象的單個實例,但是,似乎並非如此。
根據我的測試,似乎使用一個實例進行構造函數注入,並在調用kernel.Get
時返回給我一個實例。
我想要的是kernel.Get
返回給我用於構造函數注入的同一個實例。這可能嗎?
類型'B'和'IB'是不同的,你創建兩個不同的綁定,所以你有兩個單身'B'和'IB'其解析爲'B'類型的實例。 –