The TypeRef table has the following columns:
-
ResolutionScope (an index into a Module, ModuleRef, AssemblyRef or TypeRef table, or null; more precisely, a ResolutionScope (§II.24.2.6) coded index)
-
TypeName (an index into the String heap)
-
TypeNamespace (an index into the String heap)
This contains informative text only.
-
ResolutionScope shall be exactly one of:
-
null – in this case, there shall be a row in the ExportedType table for this Type – its Implementation field shall contain a File token or an AssemblyRef token that says where the type is defined [ERROR]
-
a TypeRef token, if this is a nested type (which can be determined by, for example, inspecting the Flags column in its TypeDef table – the accessibility subfield is one of the
tdNestedXXX
set) [ERROR] -
a ModuleRef token, if the target type is defined in another module within the same Assembly as this one [ERROR]
-
a Module token, if the target type is defined in the current module – this should not occur in a CLI ("compressed metadata") module [WARNING]
-
an AssemblyRef token, if the target type is defined in a different Assembly from the current module [ERROR]
-
-
TypeName shall index a non-empty string in the String heap [ERROR]
-
TypeNamespace can be null, or non-null
-
If non-null, TypeNamespace shall index a non-empty string in the String heap [ERROR]
-
The TypeName string shall be a valid CLS identifier [CLS]
-
There shall be no duplicate rows, where a duplicate has the same ResolutionScope, TypeName and TypeNamespace [ERROR]
-
There shall be no duplicate rows, where TypeName and TypeNamespace fields are compared using CLS conflicting-identifier-rules [CLS]
End informative text.