1
我嘗試了很多方法,但沒有運氣。 如何解決IWindowService?如何使用一個通用構造函數參數註冊/解析一個類型
這是我有:
var c = new UnityContainer();
c.RegisterType<IvmMain, vmMain>("mvm");
c.RegisterType<IWindow, MainWindow>("mw");
c.RegisterType(typeof(IWindowService<IvmMain>), typeof(WindowService<vmMain>),"win",
new InjectionConstructor(new ResolvedParameter<IWindow>("mw")),
new InjectionConstructor(new ResolvedParameter<IvmMain>("mvm")));
窗口服務的實現:
public class WindowService<TViewModel> : IWindowService<TViewModel>
{
readonly Window _win;
TViewModel _vm;
public WindowService(IWindow win, TViewModel vm)
{
_vm = vm;
_win = win as Window;
_win.DataContext = vm;
}
錯誤: 類型WindowService沒有一個構造函數的參數(IWindow )。
感謝分享! – Legends
還有一個問題(我可以爲此打開一個新的Q): 我使用構造函數注入,所以我不明確使用resolve方法。 如果我有另一個'container.RegisterType();'並且想在另一個類中使用這個作爲constrtuctor參數? 然後會是什麼方法? 現在我需要命名註冊......而不使用'[Dependency]'屬性 –
Legends
某種方式您確實需要知道您想要解析的類型。建設者注入與否。有很多方法可以做到這一點。看看這個答案。 http://stackoverflow.com/questions/38475047/breaking-solid-principles-in-multiple-implementation-of-an-interface/38475681#38475681 – smoksnes