System.Reflection.MemberTypes 有八个不同的枚举值。五个直接映射到特定的 MemberInfo 类(ConstructorInfo、MemberInfo 等)。MemberTypes.NestedType 可以被认为是 Type 而不是 MemberInfo。我试图了解 (1) MemberTypes.Custom 和 (2) MemberTypes.TypeInfo 成员。有没有人有这样的成员的例子?
问问题
724 次
1 回答
4
public class Foo
{
public class Bar { }
}
对于这两个类,以下将是正确的。
typeof(Foo).MemberType == MemberTypes.TypeInfo
typeof(Foo.Bar).MemberType == MemberTypes.NestedType
两者TypeInfo
和都NestedType
表明您正在处理一个类型,区分该类型是否嵌套。枚举值TypeInfo
只是遵循命名约定,而实际的子类型MemberInfo
是Type
. 一方面Type
应该被称为TypeInfo
坚持命名约定,另一方面它似乎有点可疑,这Type
是从一开始就派生出来MemberInfo
的。但事实就是如此。也许成员MemberInfo
应该更好地理解为程序集或类型成员,而不仅仅是类型成员。
从 .NET 4.5 开始,有新的子类TypeInfo
继承自扩展方法Type
并可以使用Type.GetTypeInfo()
扩展方法访问;看到那里的区别。
我不确定MemberTypes.Custom
但查看CLI 规范,尤其是 II.10.2,可能是指与类型关联的自定义属性或其他自定义数据。查看.NET 参考源代码也不能提供额外的见解。
于 2014-04-06T03:20:06.610 回答