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