Resharper tells me that MemberInfo.DeclaringType can never be null:
However when that code is run, the text "Top level member" is printed. I don't get it, what's wrong here?
Microsoft Code Contracts states that it is never null.
// System.Reflection.MemberInfo
public virtual Type DeclaringType
{
get
{
Contract.Ensures(Contract.Result<Type>() != null, null, "Contract.Result<Type>() != null");
Type result;
return result;
}
}
So ReSharper relies on Code Contracts here.
Resharper is simply wrong here. MemberInfo
is an abstract
type and it's possible for an arbitrary implementation to return whatever it pleases including null
Example:
class EvilMemberInfo : MemberInfo
{
public override System.Type DeclaringType
{
get { return null; }
}
// Rest omitted for brevity
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With