Hallo Leute,
mein (Demo)Projekt mit Unity(IoC) erzeugt ViewModels durch named Registrations. Dabei wird die InjectionFactory
verwendet. Diese soll ersetzt werden durch die neue Methode RegisterFactory<>..., da InjectionFactory obsolete ist.
Ich habe mir alle Überladungen für RegisterFactory angesehen, kann es aber auf mein Projekt nicht übertragen.
Wer kann mir helfen, InjectionFactory durch RegisterFactory zu ersetzen ? Vielen Dank!
mein (Demo)Projekt mit Unity(IoC) erzeugt ViewModels durch named Registrations. Dabei wird die InjectionFactory
verwendet. Diese soll ersetzt werden durch die neue Methode RegisterFactory<>..., da InjectionFactory obsolete ist.
Ich habe mir alle Überladungen für RegisterFactory angesehen, kann es aber auf mein Projekt nicht übertragen.
Wer kann mir helfen, InjectionFactory durch RegisterFactory zu ersetzen ? Vielen Dank!
Code:
public class ContainerBuilder
{
public static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<IViewModel, NameViewModel>("NameVM")
.RegisterType<IViewModel, StatusViewModel>("StatusVM")
.RegisterType<IViewModel, MainWindowViewModel>("MainVM")
//mit InjectionFactory werden die richtigen VM's erzeugt (s. void Initialize())
.RegisterType<Func<string, IViewModel>>(new InjectionFactory(c =>
new Func<string, IViewModel>(name => c.Resolve<IViewModel>(name))));
//ersetze InjectionFactory durch RegisterFactory
//.RegisterFactory<IViewModel>(???,???,???,null);
return container;
}
}
public class ViewModelController
{
IUnityContainer container = ContainerBuilder.BuildUnityContainer();
public ViewModelController()
{ Initialize(); }
void Initialize()
{
IViewModel statusVM = CreateViewModel("StatusVM");
IViewModel mainVM = CreateViewModel("MainVM");
IViewModel nameVM = CreateViewModel("NameVM");
}
public IViewModel CreateViewModel(string vmName)
{ return container.Resolve<IViewModel>(vmName); }
}
class Program
{
static void Main(string[] args)
{
var vmc = new ViewModelController();
Console.ReadKey();
}
}