我通过调用 GetValue 来检索属性的值,如下所示:
//have T tObj;
var sExpr = s.Body as MemberExpression;
var sProp = typeof(T).GetProperty(sExpr.Member.Name);
var sVal = dProp.GetValue(tObj, null);
由于某种原因,编译器/resharper 永远不会认为 sVal 为空(我不确定哪个显示警告)。我在设计时没有收到可能的空引用警告。如果我创建一个条件,if(sVal == null)
我会得到一个设计时警告,该表达式总是错误的。
sVal 只是一个对象,对象可以为空。我不认为 GetValue 保证永远不会返回 null。这是怎么回事?