反射:对象引用未设置为对象的实例

时间:2016-01-12 16:32:23

标签: c# reflection

我尝试使用反射调用方法。 我的目标:

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

1 个答案:

答案 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;
}