Xamarin Forms: мастер-класс помощника

Мое текущее приложение имеет несколько страниц с основными сведениями. Я хочу создать вспомогательный класс, который имеет функцию, которая принимает список PageModels-Pages( ViewModels-views), через который я могу перебирать и создавать главные страницы с подробностями.

MyCurrent Code:

public static Page SetupMasterDetailNav<T,U>( Dictionary<T,string> Menu) 
        where T : class 
         //In Dictionary T is ViewModel(PageModel) , 
          String is name displayed on Master page  
    {
        var masterDetail = new FreshMasterDetailNavigationContainer();

        foreach (KeyValuePair<T,string> item in Menu)
        {
            masterDetail.AddPage<item.Key>(item.Value); 
        }
        masterDetail.Init("");
        return masterDetail;
    }

Этот код не работает. Он говорит мне, что item.key является переменной и не может использоваться как тип. Может ли кто-нибудь предложить мне лучший подход или как еще я могу достичь своей цели?

1 ответ

Решение

AddPage<T> Метод является универсальным методом, который ожидает тип. В этом случае это FreshBasePageModel, Нормальное использование будет что-то вроде:

masterDetail.AddPage<MyViewModel>("MyPage", model);

или же:

masterDetail.AddPage<MyViewModel>("MyPage");

Поскольку ваш метод уже является универсальным, и, кажется, вы хотите, чтобы он был типом ViewModel, вы можете просто сделать:

masterDetail.AddPage<T>(item.Value);

Для этого вы должны изменить сигнатуру вашего метода на что-то вроде:

public static Page SetupMasterDetailNav<T,U>(Dictionary<T,string> Menu) 
    where T : FreshBasePageModel

Не уверен, что U используется в вашем случае, вы не показали его использование.

Почему ты вообще это делаешь меня озадачивает.

Другие вопросы по тегам