1

我当前的应用程序有多个主详细信息页面。我想创建一个辅助类,它具有接受 PageModels-Pages( ViewModels-views ) 列表的函数,我可以遍历并创建主详细信息页面。

我的当前代码:

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 是一个变量,不能用作类型 谁能建议我更好的方法或者我还能如何实现我的目标?

4

1 回答 1

2

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在您的情况下使用的是什么,您还没有显示它的用法。

你为什么要这样做让我很困惑。

于 2016-09-23T17:22:20.150 回答