0

我有一個帶mvvmlight和ninject 3.x的silverlight 4項目。Ninject無法在Silverlight項目中正確解析依賴關係

我設置這樣的

kernel = new StandardKernel(new ViewModelModule(), new ClientSessionModule()); 

容器和這樣

public class ViewModelModule : NinjectModule 
{ 
    public override void Load() 
    { 
     ((StandardKernel)Kernel) 
      .Bind(scanner => scanner.FromThisAssembly() 
          .Select(x => x.IsSubclassOf(typeof(ViewModelBase))) 
      .BindDefaultInterface()); 
    } 
} 

public class ClientSessionModule : NinjectModule 
{ 
    public override void Load() 
    { 
     Kernel.Bind<IClientContext>().To<ClientContext>().InSingletonScope(); 
    } 
} 

模塊現在的問題是後者。在應用中的一個點這種依賴是顯式地解決,更新這樣的:

var context = App.Ioc.Get<IClientContext>(); 
context.Username = "just a sample name"; 

現在,當一個視圖模型加載它得到IClientContext注入像

public MainViewModel(IClientContext clientContext) 

問題是,實例不早點設定名稱。 但是,如果我在同一個ViewModel內解析再次明確解析我得到預期的實例與名稱設置。

我缺少什麼,因爲sigleton沒有被注入,因爲我預計它會自動注入?

回答

0

剛剛在我的解決方案中發現了一個重複的內核。這就解釋了爲什麼我無法像預期的那樣解決問題,因爲我運行了兩個內核: