使用反射从资源中获取价值

时间:2018-10-15 17:41:58

标签: c# reflection

您好,我正在尝试使用反射从资源文件中的Key中获取值。但是我正在努力。我建立了名称空间和区域性,但值始终为空。

    public static string GetResource(string language)
    {
        var culture = (language == "en-US") ? string.Empty : $".{language}";

        var resource = Assembly
            .GetExecutingAssembly()
            .GetTypes()
            .Where(x => x.Name.Contains("Test"))
            .Single(x => x.Namespace == $"ConsoleApp1.Resources{culture}");
        resource.GetProperty("Hello");//this is always null

        return null;
    }

我不确定为什么会这样,但是我知道我得到了正确的资源,并且看到了其中的属性。有人有任何建议吗?

你好属性:

    internal static string Hello {
        get {
            return ResourceManager.GetString("Hello", resourceCulture);
        }
    }

1 个答案:

答案 0 :(得分:3)

由于“ Hello”属性为internalstatic,因此我们应指定它:

resource.GetProperty("Hello", BindingFlags.NonPublic | BindingFlags.Static);