0

我想注入一個EF ObjectContext使用Unity構造函數注入。 我學嘗試是在這樣的bootsprapper註冊類型:統一:構造函數注入與多個構造函數

protected override void ConfigureContainer() 
{ 
    base.ConfigureContainer(); 
    Container.RegisterType<ObjectContext, MyObjectContext>(new InjectionConstructor()); 
} 

EF創建多發的構造看起來像這些

public MyObjectContext() : base("name=MyObjectContext", "MyObjectContext") 
public MyObjectContext(string connectionString) : base(connectionString, "MyObjectContext") 
public MyObjectContext(EntityConnection connection) : base(connection, "MyObjectContext") 

調試時我的代碼統一將引發ResolutionFailedException告訴我「之類MyObjectContext有多個長度爲1的構造函數。無法消除歧義。「在具有以下構造函數的新類解析時。

public MainViewModel(UnityContainer container, MyObjectContext entities) 

據我所知使用RegisterTypenew InjectionConstructor()作爲參數可確保缺省參數的構造函數被調用(這就是我想要的)。爲什麼Unity無法按預期解析類型?我錯過了什麼嗎?

問候

周杰倫

回答

3

您的註冊看起來正確。你確定註冊碼正在被調用?嘗試在其上放置一個斷點。 (爲什麼你將你的容器傳遞給你的viewmodel?)

+0

我把這個標記爲答案,因爲它將我引向瞭解決方案。 Unity似乎有一些問題可以解決,因爲我在錯誤的地方註冊了它。我通過了容器,因爲我認爲我需要它來解決跨項目(shell,模塊,基礎設施等)的註冊實例/類型,但這似乎並不是正確的/工作方式。 – Jay