【发布时间】:2020-09-03 20:25:47
【问题描述】:
我正在尝试在 ASP.NET 中获取用于翻译的资源,使用将字符串转换为类型 ResourceManager 和用于翻译的外部资源文件。但是当我执行时,我会看到这个错误:
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 information 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”方法。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
您正试图在实例
this上调用方法GetString,但MethodInfo来自MSD_Website.Language.{translation}.general类型。 -
你好@Michael,我把它改成element,然后改成myProp,我得到了同样的错误
标签: c# asp.net reflection resx