繁体   English   中英

被称为Type.InvokeMember无效。 如何获得资源价值?

[英]calledType.InvokeMember don't work. How to get value of resource?

我尝试获取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);                                       }

certif =“ PRG_CARTV”

namedType是:{Name =“ Resources” FullName =“ TestNamespace.Resources”},当我在“ String s =(String)namedType”行中时,出现错误:“找不到方法'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 \\”已正确嵌入或链接到程序集中...”

您在这里有2个问题:

1)通过反射获得资源的价值,我尝试了这一方法并工作:

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

请注意已更改的绑定标志: BindingFlags.GetProperty而不是BindingFlags.InvokeMethodBindingFlags.NonPublic而不是BindingFlags.Public

2)问题与ResourceManager有关。 我本人将尝试再次重新创建Resources.resx。 如果要进一步调查,请在此处检查StackOverflow中的类似问题,例如: 找不到适合于指定区域性或中性区域性的任何资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM