.net - MemberTypes.Custom 和 MemberTypes.TypeInfo 成员的示例

标签 .net reflection types

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

两者 TypeInfoNestedType表明您正在处理一个类型,并区分该类型是否嵌套。枚举值 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/

相关文章:

c# - 在 Mac 上的 Unity 中使用 .NET 4.x

c# - "Tool tip"是否被 ToolStripItems 覆盖(如果它们有下拉项)?

java - 即时创建 java 参数化类型

go - 如何将断言 reflect.Value 结构返回到我知道它实现的接口(interface)?

.net - 返回 System.Nullable 的 int64 的 GetType

c# - Stream Reader 进程无法访问文件,因为它正在被另一个进程使用

c# - 监视器.TryEnter()

java - 为什么 astyanax (java) 无法在我的 scala 案例类参数列表中识别我的 @Id 注释值?

C++ 指向对象类型检查的指针

javascript - 如何按共同特征组织数据?