Refactoring MVVM inclusive IoC Part 1

Ich habe schon viele Apps mit MVVM erstellt, Aber auf dem Blog von Kelly Sommers Kellabyte, habe ich einen extrem guten Post gefunden wie man seine MVVM Logik durch Refactoring sinnvoll umbaut und somit eine bessere Logik für seinen MVVM aufsetzt.

Dieser Post besteht aus 3 Teilen:

  • Part 2: ViewModelResolver, composition root and encapsulating the IoC container
  • Part 3: Handling special cases like late registrations outside the composition root
  • Part 4: Unit testing

Before

01 public TViewModel ViewModel
02 {
03     get
04     {
05         TViewModel viewModel;
06         bool wasCreated;
07         bool designMode = DetectDesignMode();
08
09         if (designMode)
10         {
11             viewModel = new TDesignViewModel();
12             wasCreated = true;
13         }
14         else
15         {
16             if (shareInstances)
17             {
18                 viewModel = (TViewModel)sharedInstances.CreateOrGetValue(
19                                 typeof(TViewModel),
20                                 () => new TViewModel(), out wasCreated);
21             }
22             else
23             {
24                 viewModel = new TViewModel();
25                 wasCreated = true;
26             }
27         }
28
29         viewModel.OnLocated(wasCreated);
30         return viewModel;
31     }
32 }

 

After

01 public TViewModel ViewModel
02 {
03     get
04     {
05         TViewModel viewModel;
06         bool designMode = DetectDesignMode();
07
08         if (designMode)
09         {
10             // At design time instantiate design time version.
11             // This populates mock data, dependencies don't have to be real.
12             viewModel = new TDesignViewModel();
13         }
14         else
15         {
16             // Request IoC container to resolve view model & its deps.
17             viewModel =
18                 ApplicationHost.Current.Container.Resolve<TViewModel>();
19         }
20
21         viewModel.OnLocated(wasCreated);
22         return viewModel;
23     }
24 }

 

Quelle:

Refactoring to improve maintainability and blendability using IoC part 1: View Models
Advertisements

About pocketmobile

Window Phone Developer

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: