Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否无法将页面的字符串表示形式强制转换为页面类型?_C#_Casting_Windows 8_Windows Store Apps - Fatal编程技术网

C# 是否无法将页面的字符串表示形式强制转换为页面类型?

C# 是否无法将页面的字符串表示形式强制转换为页面类型?,c#,casting,windows-8,windows-store-apps,C#,Casting,Windows 8,Windows Store Apps,我在App.xaml.cs“forever”的OnLaunched()事件中有以下代码: …但我猜它实际上是第一次运行(执行状态被终止),因为我得到了以下错误消息: 用户代码未处理System.InvalidCastException HResult=-2147467262 消息=无法将“System.String”类型的对象强制转换为“System.type”类型 我正在每个页面的OnNavigatedTo()事件中将当前页面分配给此漫游设置: 是我的语法有问题,还是我的方法有问题 我想我可以

我在App.xaml.cs“forever”的OnLaunched()事件中有以下代码:

…但我猜它实际上是第一次运行(执行状态被终止),因为我得到了以下错误消息:

用户代码未处理System.InvalidCastException HResult=-2147467262 消息=无法将“System.String”类型的对象强制转换为“System.type”类型

我正在每个页面的OnNavigatedTo()事件中将当前页面分配给此漫游设置:

是我的语法有问题,还是我的方法有问题

我想我可以这样分配:

App.roamingSettings.Values["CurrentPageType"] = "DetailPage";
…然后在我的OnLaunched()事件中使用:

…但我正试图比这更“优雅”…我知道我可以一步一步地完成它,但我想知道是否有一个位置可以查看(我想是在注册表的某个地方),在那里可以查看为那些漫游设置保存的值)

更新 在看了这篇文章之后,考虑到那些不带arg的页面,我将代码更改为:

        if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
        {
            if (roamingSettings.Values.ContainsKey("CurrentPageType"))
            {
                if (roamingSettings.Values.ContainsKey("CurrentPageParam"))
                {
                    rootFrame.Navigate((Type)roamingSettings.Values["CurrentPageType"],
                                             roamingSettings.Values["CurrentPageParam"]);
                }
                else
                {
                    rootFrame.Navigate((Type) roamingSettings.Values["CurrentPageType"];
                }
            }
        }
试一试


当心序列化到CurrentPageParam中的内容,一些简单类型(例如TimeSpan)似乎可以序列化,但与Settings.Values字典序列化程序不兼容。
App.roamingSettings.Values["CurrentPageType"] = "DetailPage";
if (roamingSettings.Values["CurrentPageType"] == "DetailPage")
{
    Frame.Navigate(typeof(DetailPage), App.activeSection);
}
else if (. . . etc. . . .)
        if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
        {
            if (roamingSettings.Values.ContainsKey("CurrentPageType"))
            {
                if (roamingSettings.Values.ContainsKey("CurrentPageParam"))
                {
                    rootFrame.Navigate((Type)roamingSettings.Values["CurrentPageType"],
                                             roamingSettings.Values["CurrentPageParam"]);
                }
                else
                {
                    rootFrame.Navigate((Type) roamingSettings.Values["CurrentPageType"];
                }
            }
        }
rootFrame.Navigate(Type.GetType(roamingSettings.Values["CurrentPageType"].ToString()),
                                roamingSettings.Values["CurrentPageParam"]);