c# - 如何在 switch 语句中使用字符串资源

标签 c# uwp windows-10 switch-statement

有没有办法通过 switch 语句使用字符串资源?尝试以编程方式获取字符串资源后,返回错误。

错误

'resourceLoader' is variable but is used like a type

C#

public class PageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();

        Type page = null;
        switch (value as string)
        {
            case resourceLoader.GetString("SteveJohnson/Text"):
                page = typeof(FirstPage);
                break;
            case resourceLoader.GetString("PeteDavidson/Text"):
                page = typeof(SecondPage);
                break;
            case resourceLoader.GetString("OneDrive/Text"):
                page = typeof(FistPage);
                break;
            case resourceLoader.GetString("Twitter/Text"):
                page = typeof(SecondPage);
                break;
            default:
                break;
        }

        return page;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

最佳答案

您在寻找 pattern matching ?这只是我最近发现的东西(它是 C# 7 功能 which I came across in this link ),你所做的与我的用例有点不同,但我只是用伪代码运行了一个快速测试(调用一个方法另一个类从 switch 语句获取并返回一个字符串),这似乎有效。对于你正在做的事情,我认为你会有这样的事情:

switch (value)
{
    case string _ when (resourceLoader.GetString("SteveJohnson/Text") == value as string):
                    page = typeof(FistPage);
                    break;
    case string _ when (resourceLoader.GetString("PeteDavidson/Text") == value as string):
                    page = typeof(SecondPage);
                    break;

关于c# - 如何在 switch 语句中使用字符串资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63454146/

相关文章:

c# - 在 C# 中获取 Windows 10 中的当前版本操作系统

virtual-machine - VirtualBox:无法访问内核驱动程序

c# - Entityframework Core 无法将类型为 'System.Int32' 的对象转换为类型 'System.Int64'

uwp - 允许将 Desktop Bridge(百年)应用程序安装在不同的位置

windows - 从通用 Windows 应用程序的后台任务中打开 uri

c# - 如何了解 Windows 10 周年更新或更高版本是否在 WPF 应用程序中使用其浅色或深色主题?

c# - 有SIMD指令集的宏吗?

c# - 我合并金矿的算法的缺陷在哪里?

c# - 为什么我的 Resharper NUnit session 停止工作,但在 Debug模式下工作

c# - UWP Ctrl+F 实现