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) |