c# - IoC container in MVVMLight - How to pass concrete implementation to the specified element? -
I am currently facing the following problem with the IoC container from MVVM light - I have the interface IDataService
, which is being implemented by two classes: DataService1
and DataService2
. I also have the main view model
category, which has several dependencies, with one IDataService
.
The issue is, I do not have MainViewModel
with DataService2
, another one, how can I do it? I have tried both "instances" of IDataService
and MainViewModel
, such as:
class MainViewModel {// MainViewModel has many dependencies, Public Main Week Model (Xx, YY, Z, MM, NN, IDTA Service Service Services) {}} (...) Simple IOC Default. Registrar & lt; IDataService & gt; (() => New Data S Service 1 (), "A"); SimpleIoc.Default.Register & lt; IDataService & gt; (() => New DataService2 (), "B"); (...) var viewmodel = Simple Ioc.Default.GetInstance & lt; MainViewModel & gt; ("B"); // runtime exception
but I get a runtime exception that basically says that main view model
can not be solved - which I have understood if I I want to solve it Closed Main View Model
("B"), all its dependencies must be closed. This is not what I want - I want to solve MainViewModel
, in which there is a default dependency, apart from one.
How can I do this? Thanks in advance for any help I'm clearly missing something.
Hate to say, but it looks the only way. You must register a keyed factories:
SimpleIoc.Default.Register & lt; MainViewModel & gt; New MainViewModel (New X), New Y (), New Z (), New M (), New N (), SimpleIak Default.Gate Instance & lt; IDataService & gt; (" B "))," B ");
Comments
Post a Comment