0

我试图获得 ressource.resx 的值,但我不能。

我愿意 :

foreach (string certif in ContactCertifications)
{
    Type calledType = Type.GetType("TestNamespace.Resources");            

    String s = (String)calledType.InvokeMember(certif,BindingFlags.InvokeMethod 

    | BindingFlags.Public |BindingFlags.Static,null,null,null);                                       }

证书 = "PRG_CARTV"

calledType 是:{Name = "Resources" FullName = "TestNamespace.Resources"} 当我在 "String s = (String) calledType" 行中时出现错误:"找不到方法 'TestNamespace.Resources.PRG_CARTV'。 "

当我有 String s = TestNamespace.Resources.PRG_CARTV;它的工作时,所以我不明白..

当我简单地做:

var myManager = new ResourceManager(typeof(Resources));
var myString = myManager.GetString("PRG_CARTV");

它不起作用,我有一个错误:“找不到指定文化或中性文化的适当资源。确保 \"TestNamespace.Ressources.resources \" 已正确嵌入或链接到程序集中......”

4

1 回答 1

0

你在这里有两个问题:

1)通过反射获取资源的价值,我尝试了这个并且工作:

String s = (String) calledType.InvokeMember(certif, BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Static, null, null, null);

请注意更改的绑定标志:BindingFlags.GetProperty代替BindingFlags.InvokeMethodBindingFlags.NonPublic代替BindingFlags.Public

2) 资源管理器的问题。我自己会尝试再次重新创建 Resources.resx。如果您想进一步调查 StackOverflow 中的类似问题,例如:找不到适合指定文化或中性文化的任何资源

于 2018-10-10T16:09:14.590 回答