SimpleIoc.Default.Register schlägt bei IsInDesignModeStatic fehl, wenn sich die Schnittstelle in einer anderen Assembly befindet

Im statischen Konstruktor vonViewModelLocator Klasse dieSimpleIoc.Default.Register<T>(); scheitert anIsInDesignModeStatic Modus, wenn sich das Interface in einem anderen Projekt befindet. Als Ergebnis derMainWindow.xaml Designer ist zur Entwurfszeit leer.

Ich habe eine einfache Lösung zum Testen gemacht. Nur Änderungen, die ich vorgenommen habe, ist das Verschieben derDataItem Klasse und dieIDataService Schnittstelle in das Domain-Projekt.

Hier herunterladen

Ich habe einen Rundgang gefunden: Fügen Sie im ClientWpf-Projekt einen Link zu IDataService.cs hinzu.

public class ViewModelLocator {
    static ViewModelLocator() {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        if (ViewModelBase.IsInDesignModeStatic) {

            // It fails if the IDataService is in different assembly
            // Delete the link of IDataService.cs from the ViewModel folder...
            SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
        }
        else {
            SimpleIoc.Default.Register<IDataService, DataService>();
        }

        SimpleIoc.Default.Register<MainViewModel>();
    }
...
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage