PropertyInfo.DeclaringType真的可以为null吗?

我正在使用ReSharper(旧版本),当我使用PropertyInfo.DeclaringType时它曾警告我它可以为null

在第一眼和第二眼看来,这对我没有意义。 这是真的,还是ReSharper有点愚蠢,并没有注意到它是一个PropertyInfo ,而不是一般的MemberInfo

PropertyInfo.DeclaringType属性inheritance自MemberInfo.DeclaringType和文档 :

如果MemberInfo对象是全局成员(即,如果它是从Module.GetMethods方法获取的,它返回模块上的全局方法),则返回的DeclaringType将为null

因此,在这种情况下,警告似乎很好。

如果在模块中定义属性,则它可以为null 。 在C#中,如果没有reflection,则无法定义此类方法和属性(请参阅PropertyBuilder )。 但是,如果您引用VB.NET程序集,它可以有这样的成员。