获取自定义资源和自定义密钥转换字符串为“ ResourceManager”

问题描述

我正在尝试使用ASP.NET中的字符串转换类型ResourceManager和用于翻译的外部资源文件获取要在ASP.NET中进行翻译的资源。但是当我执行时,我会看到此错误

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more @R_687_4045@ion about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:

Line 24:             Type myProp = element.GetProperty("ResourceManager").GetType();
Line 25:             MethodInfo getString = myProp.getmethod("GetString");
Line 26:             var r = getString.Invoke(this,new object[] { key });
Line 27:             return r.ToString();
Line 28:         }

这是我的代码

protected string getText(string key)
{
    Type element = Type.GetType($"Website.Language.{translation}.general");
    Type myProp = element.GetProperty("ResourceManager").GetType();
    MethodInfo getString = myProp.getmethod("GetString");
    var r = getString.Invoke(this,new object[] { key });
    return r.ToString();
}

显然,getString变量返回null,但是方法“ GetString”应该被称为ResourceManager的“ GetString”方法。 有人可以帮我吗?

解决方法

MethodInfo.Invoke的第一个参数必须是某个对象的实例(据我所知,它的类型必须与您所反映的类型相同,例如Website.Language.{translation}.general)。 / p>

这可能行不通,而只是向您显示您需要朝哪个方向前进。

protected string getText(string key)
{
    Type element = Type.GetType($"Website.Language.{translation}.general");
    var instance = Activator.CreateInstance(element);
    Type myProp = element.GetProperty("ResourceManager").GetType();
    MethodInfo getString = myProp.GetMethod("GetString");
    var r = getString.Invoke(instance,new object[] { key });
    return r.ToString();
}

另请参见this示例。