代码之家  ›  专栏  ›  技术社区  ›  Elddif

calledType.InvokeMember不工作。如何获得资源的价值?

  •  0
  • Elddif  · 技术社区  · 6 年前

    我试图得到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);                                       }
    

    调用的类型是:{Name=“Resources”FullName=“TestNamespace.Resources”} 当我在“String s=(String)calledType”行中时,我有一个错误:“Method'TestNamespace.Resources.PRG\u CARTV'notfound。”

    当我有 String s = TestNamespace.Resources.PRG_CARTV; 这是工作,所以我不欠照顾。。

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   binarytail    6 年前

    这里有两个问题:

    1) 通过反射获取资源的价值,我尝试了以下方法:

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

    BindingFlags.GetProperty 而不是 BindingFlags.InvokeMethod BindingFlags.NonPublic BindingFlags.Public

    2) 资源管理器的问题。我自己会再次尝试重新创建Resources.resx。如果要进一步调查,请检查StackOverflow中的类似问题,例如: Could not find any resources appropriate for the specified culture or the neutral culture