次のように GetValue を呼び出して、プロパティの値を取得しています。
//have T tObj;
var sExpr = s.Body as MemberExpression;
var sProp = typeof(T).GetProperty(sExpr.Member.Name);
var sVal = dProp.GetValue(tObj, null);
何らかの理由で、コンパイラ/リシャーパーによって sVal が null と見なされることはありません (どちらが警告を表示しているのかわかりません)。設計時に null 参照の可能性のある警告が表示されません。のような条件を作成するif(sVal == null)
と、式が常に false であるという設計時の警告が表示されます。
sVal は単なるオブジェクトであり、オブジェクトは null になる可能性があります。GetValue が決して null を返さないことを保証するとは思いません。どうしたの?