TypeDefTableEntry (CLR_RECORD_TYPEDEF)

The MethodRef table contains entries with the following structure:

Name Type Description
Name StringTableIndex Index into string table with the name of the type
NameSpace StringTableIndex Index into string table with the name of the namespace containing the type
Extends TypeDefOrRef Index into the TypeDef table, TypeRef table, or TypeSpec table tables, more precisely, a TypeDefOrRef
EnclosingType TypeDefOrRef Index into the TypeDef table, more precisely, a TypeDefOrRef if this is a nested type.
Interfaces SignatureTableIndex Index into signature blob table for the set of interfaces implemented by this type
FirstMethod MethodDefTableIndex Index into MethodDef table for the first method of the type
VirtualMethodCount uint8_t Count of virtual methods in the type
InstanceMethodCount uint8_t Count of instance methods in the type
StaticMethodCount uint8_t Count of static methods in the type
DataType DataType Data type identity for the type
FirstStaticField FieldDefTableIndex Index into FieldDef for the first static field of the type
FirstInstanceField FieldDefTableIndex Index into FieldDef for the first instance field of the type
StaticFieldsCount uint8_t Count of static fields in the type
InstanceFieldsCount uint8_t Count of instance fields for the type
FirstGenericParam GenericParamTableIndex Index into GenericParam table for the first generic parameter for the type
GenericParamCount uint8_t Count of generic parameters for the type
Flags TypeDefFlags Flags defining intrinsic attributes and access modifiers for the type

TypeDefFlags

The TypeDefFlags enumeration provides a set of flag values for various intrinsic attributes and accessibility traits of a type definition.

Name Value Description
None 0 No special attributes or semantics
ScopeMask 0x0007 Mask to extract the accessibility scope values
NotPublic 0x0000 Class is not public scope.
Public 0x0001 Class is public scope.
NestedPublic 0x0002 Class is nested with public visibility.
NestedPrivate 0x0003 Class is nested with private visibility.
NestedFamily 0x0004 Class is nested with family visibility.
NestedAssembly 0x0005 Class is nested with assembly visibility.
NestedFamANDAssem 0x0006 Class is nested with family and assembly visibility.
NestedFamORAssem 0x0007 Class is nested with family or assembly visibility.
Serializable 0x0008 Type is serializable
SemanticsMask 0x0030 Mask to extract the bits pertaining to type semantics
Class 0x0000 Class Semantics (in particular the value of this field is that bits 4 and 5 are 0)
ValueType 0x0010 Value type semantics
Interface 0x0020 Interface semantics
Enum 0x0030 Enum semantics
Abstract 0x0040 Type is abstract
Sealed 0x0080 Type is sealed
SpecialName 0x0100 Type is a well known special name
Delegate 0x0200 Type is a delegate
MulticastDelegate 0x0400 Type is a multicast delegate
Patched 0x0800 (TODO)
BeforeFieldInit 0x1000 (TODO)
HasSecurity 0x2000 (TODO)
HasFinalizer 0x4000 (TODO)
HasAttributes 0x8000 (TODO)