我尝试使用反射调用方法。 我的目标:
public class CurrentSearch
{
public string currentUniverse { get; set; }
public string currentApplication;
public string currentUsage;
...
我的代码:
CurrentSearch cS = SessionUtils.getCS();
cS.currentUniverse = "lol";
string methodName = "currentUniverse" ;
var test = typeof(CurrentSearch).GetMethod(methodName).Invoke(cS, null);
但是我得到错误"对象引用未设置为对象的实例。"在最后一行。我已经检查了cS,它不是空的...... 怎么了? THX
答案 0 :(得分:1)
currentUniverse
是一个属性,因此您需要使用GetProperty
,而不是GetMethod
。
void Main()
{
CurrentSearch cs = new CurrentSearch();
cs.currentUniverse = "lol";
string methodName = "currentUniverse" ;
Console.WriteLine(typeof(CurrentSearch).GetProperty(methodName).GetValue(cs));
^^^^^^^^^^^
}
public class CurrentSearch
{
public string currentUniverse { get; set; }
public string currentApplication;
public string currentUsage;
}