System.Reflection.MemberTypes 有八个不同的枚举值。五个直接映射到特定的 MemberInfo 类(ConstructorInfo、MemberInfo 等)。 MemberTypes.NestedType 可以被认为是 Type 而不是 MemberInfo。我正在尝试了解 (1) MemberTypes.Custom 和 (2) MemberTypes.TypeInfo 成员。有没有人有这样的成员的例子?
最佳答案
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
的成员(member)应该更好地理解为程序集或类型成员,而不仅仅是类型成员。从 .NET 4.5 开始,有新的子类
TypeInfo
继承自 Type
并使用 Type.GetTypeInfo()
extension method 访问;请参阅那里的区别。我不确定
MemberTypes.Custom
但看着CLI specification ,尤其是 II.10.2,这可能是指与类型关联的自定义属性或其他自定义数据。看着.NET reference source code也没有提供额外的见解。
关于.net - MemberTypes.Custom 和 MemberTypes.TypeInfo 成员的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068635/