private void GetTypeNameHelper(out string name, out string nsName, out string assemblyName) { TypeReferenceHandle typeRefHandle; QTypeDefinition qTypeDefinition; MetadataReader reader; RuntimeTypeHandle genericDefinitionHandle = GetTypeDefinition().GetRuntimeTypeHandle(); Debug.Assert(!genericDefinitionHandle.IsNull()); string enclosingDummy; // Try to get the name from metadata if (TypeLoaderEnvironment.Instance.TryGetMetadataForNamedType(genericDefinitionHandle, out qTypeDefinition)) { TypeDefinitionHandle typeDefHandle = qTypeDefinition.NativeFormatHandle; typeDefHandle.GetFullName(qTypeDefinition.NativeFormatReader, out name, out enclosingDummy, out nsName); assemblyName = typeDefHandle.GetContainingModuleName(qTypeDefinition.NativeFormatReader); } // Try to get the name from diagnostic metadata else if (TypeLoaderEnvironment.TryGetTypeReferenceForNamedType(genericDefinitionHandle, out reader, out typeRefHandle)) { typeRefHandle.GetFullName(reader, out name, out enclosingDummy, out nsName); assemblyName = typeRefHandle.GetContainingModuleName(reader); } else { name = genericDefinitionHandle.LowLevelToStringRawEETypeAddress(); nsName = ""; assemblyName = "?"; } }