JBS*_*rro 7 c# reflection resharper resharper-5.1
Resharper告诉我,MemberInfo.DeclaringType永远不能为null:

但是,当运行该代码时,将打印文本"顶级成员".我不明白,这里有什么不对?
Evg*_*kov 10
Microsoft Code Contracts声明它永远不会为空.
// System.Reflection.MemberInfo
public virtual Type DeclaringType
{
get
{
Contract.Ensures(Contract.Result<Type>() != null, null, "Contract.Result<Type>() != null");
Type result;
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
所以ReSharper在这里依赖代码契约.
Resharper在这里完全错了. MemberInfo是一种abstract类型,任意实现都可以返回任何它喜欢的内容null
例:
class EvilMemberInfo : MemberInfo
{
public override System.Type DeclaringType
{
get { return null; }
}
// Rest omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |