none
Callback mit mehreren items RRS feed

  • Frage

  • Hallo,

    ich entwickle gerade ein C# Applikation welche das MVVM light toolkit verwendet. In diesem Framework ist auch ein Interface IDataService enthalten welches meinen Viewmodels die benötigten ModelObjekte initialisieren und übergeben soll (ViewModelConstructor).

    public interface IDataService
        {
            void GetData(Action<IDataItem, Exception> callback);
        }
        public interface IDataItem
        {
        }

    Eine Beispielimplementierung eines IDataServices in meiner App :

    class MainWindowContainerlDataService : IDataService
        {
            public void GetData(Action<IDataItem, Exception> callback)
            {
                var item = new MainWindowContainer(
                    new KennungSelectionUserControl(),
                    new AbsatzplanViewModel(new AbsatzplanDataService()),
                    new MainMenuUserControl(),
                    new MainMenuViewModel(new MainMenuDataService())
                    );
                callback(item, null);
            }
        }

    Das dazugehörige ViewModel:

     public MainViewModel(IDataService dataService)
            {
                dataService.GetData(
                    (item, error) =>
                    {
                        if (error != null) throw error;
                        MainWindowContainer = (MainWindowContainer)item;
                    });
    
                MainContentViewModel = MainWindowContainer.MainContentViewModelBase;
                MainMenuUserControl = MainWindowContainer.MainMenuUserControl;
    
                MainMenuViewModel = MainWindowContainer.MainMenuViewModelBase;
                MainContentUserControl = MainWindowContainer.MainContentUserControl;
            }

    Wie man nun im Constructoraufruf von MainViewModel sieht, benötige ich mehrere Objecte aus dem IDataService.getData(). Leider muss ich momentan hierfür jedes mal ein eigenes Objekt zur Übergabe definieren. In diesem Fall das MainWindowContainer - Object welches das IDataItem interface implementiert.

    Meine Frage ist ob es eine elegantere Möglichkeit gibt aus dem IDataService Daten zu übergeben ohne jedes mal ein IDataItem - Object zu definieren.

    Cheers,

    eCazz


    Mittwoch, 21. Oktober 2015 15:06

Antworten

Alle Antworten