public static string GetContainingModuleName(this TypeDefinitionHandle typeDefHandle, MetadataReader reader) { var typeDef = typeDefHandle.GetTypeDefinition(reader); Handle currentHandle = !typeDef.EnclosingType.IsNull(reader) ? (Handle)typeDef.EnclosingType : (Handle)typeDef.NamespaceDefinition; Debug.Assert(!currentHandle.IsNull(reader)); while (!currentHandle.IsNull(reader)) { switch (currentHandle.HandleType) { case HandleType.TypeDefinition: typeDef = currentHandle.ToTypeDefinitionHandle(reader).GetTypeDefinition(reader); currentHandle = !typeDef.EnclosingType.IsNull(reader) ? (Handle)typeDef.EnclosingType : (Handle)typeDef.NamespaceDefinition; break; case HandleType.NamespaceDefinition: currentHandle = currentHandle.ToNamespaceDefinitionHandle(reader).GetNamespaceDefinition(reader).ParentScopeOrNamespace; break; case HandleType.ScopeDefinition: return(currentHandle.GetFullName(reader)); default: return("?"); } } return("?"); }
private NativeFormatRuntimeNamedTypeInfo(MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle, RuntimeTypeHandle typeHandle) : base(typeHandle) { _reader = reader; _typeDefinitionHandle = typeDefinitionHandle; _typeDefinition = _typeDefinitionHandle.GetTypeDefinition(reader); }
private RuntimeNamedTypeInfo(MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle, RuntimeTypeHandle typeHandle) { _reader = reader; _typeDefinitionHandle = typeDefinitionHandle; _typeDefinition = _typeDefinitionHandle.GetTypeDefinition(reader); _typeHandle = typeHandle; }
public sealed override IEnumerable <CustomAttributeData> GetPsuedoCustomAttributes(MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle) { TypeAttributes attributes = typeDefinitionHandle.GetTypeDefinition(reader).Flags; if (0 != (attributes & TypeAttributes.Import)) { yield return(ReflectionCoreExecution.ExecutionDomain.GetCustomAttributeData(typeof(ComImportAttribute), null, null)); } }
public static void GetFullName(this TypeDefinitionHandle typeDefHandle, MetadataReader reader, out string name, out string enclosing, out string nspace) { var typeDef = typeDefHandle.GetTypeDefinition(reader); Debug.Assert(!typeDef.Name.IsNull(reader)); name = typeDef.Name.GetConstantStringValue(reader).Value; enclosing = typeDef.EnclosingType.IsNull(reader) ? null : typeDef.EnclosingType.GetFullName(reader); nspace = typeDef.NamespaceDefinition.IsNull(reader) ? null : typeDef.NamespaceDefinition.GetFullName(reader); }
internal EcmaDefinitionType(TypeDefinitionHandle handle, EcmaModule module) : base() { Debug.Assert(module != null); Debug.Assert(!handle.IsNil); _module = module; _handle = handle; _neverAccessThisExceptThroughTypeDefinitionProperty = handle.GetTypeDefinition(Reader); }
public sealed override IEnumerable <CustomAttributeData> GetPsuedoCustomAttributes(MetadataReader reader, FieldHandle fieldHandle, TypeDefinitionHandle declaringTypeHandle) { TypeAttributes layoutKind = declaringTypeHandle.GetTypeDefinition(reader).Flags & TypeAttributes.LayoutMask; if (layoutKind == TypeAttributes.ExplicitLayout) { int offset = (int)(fieldHandle.GetField(reader).Offset); CustomAttributeTypedArgument offsetArgument = ExtensibleCustomAttributeData.CreateCustomAttributeTypedArgument(typeof(Int32), offset); yield return(ReflectionCoreExecution.ExecutionDomain.GetCustomAttributeData(typeof(FieldOffsetAttribute), new CustomAttributeTypedArgument[] { offsetArgument }, null)); } }
protected RuntimeInspectionOnlyNamedType(MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle) : base() { #if DEBUG if (!(this.InternalViolatesTypeIdentityRules)) { RuntimeTypeHandle runtimeTypeHandle; if (ReflectionCoreExecution.ExecutionEnvironment.TryGetNamedTypeForMetadata(reader, typeDefinitionHandle, out runtimeTypeHandle)) Debug.Assert(false, "Type identity violation: You must use a RuntimeEENamedType to represent this type as RH has generated an EEType for it."); } #endif _reader = reader; _typeDefinitionHandle = typeDefinitionHandle; _typeDefinition = _typeDefinitionHandle.GetTypeDefinition(_reader); }
protected RuntimeInspectionOnlyNamedType(MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle) : base() { #if DEBUG if (!(this.InternalViolatesTypeIdentityRules)) { RuntimeTypeHandle runtimeTypeHandle; if (ReflectionCoreExecution.ExecutionEnvironment.TryGetNamedTypeForMetadata(reader, typeDefinitionHandle, out runtimeTypeHandle)) { Debug.Assert(false, "Type identity violation: You must use a RuntimeEENamedType to represent this type as RH has generated an EEType for it."); } } #endif _reader = reader; _typeDefinitionHandle = typeDefinitionHandle; _typeDefinition = _typeDefinitionHandle.GetTypeDefinition(_reader); }
public static string GetFullName(this TypeDefinitionHandle typeDefHandle, MetadataReader reader) { var typeDef = typeDefHandle.GetTypeDefinition(reader); Debug.Assert(!typeDef.Name.IsNull(reader)); var name = typeDef.Name.GetConstantStringValue(reader).Value; var enclosing = typeDef.EnclosingType.IsNull(reader) ? null : typeDef.EnclosingType.GetFullName(reader); var nspace = typeDef.NamespaceDefinition.IsNull(reader) ? null : typeDef.NamespaceDefinition.GetFullName(reader); if (enclosing != null && name != null) { return(enclosing + "+" + name); } else if (nspace != null && name != null) { return(nspace + "." + name); } return(name); }
private static String GetTypeFullNameFromTypeDef(TypeDefinitionHandle typeDefinitionHandle, MetadataReader reader, List <int> genericParameterOffsets) { String s = ""; TypeDefinition typeDefinition = typeDefinitionHandle.GetTypeDefinition(reader); s = typeDefinition.Name.GetString(reader); TypeDefinitionHandle enclosingTypeDefHandle = typeDefinition.EnclosingType; if (!enclosingTypeDefHandle.IsNull(reader)) { String containingTypeName = GetTypeFullNameFromTypeDef(enclosingTypeDefHandle, reader, genericParameterOffsets); s = containingTypeName + "." + s; } else { NamespaceDefinitionHandle namespaceHandle = typeDefinition.NamespaceDefinition; for (;;) { NamespaceDefinition namespaceDefinition = namespaceHandle.GetNamespaceDefinition(reader); String namespacePart = namespaceDefinition.Name.GetStringOrNull(reader); if (namespacePart == null) { break; // Reached the root namespace. } s = namespacePart + "." + s; if (namespaceDefinition.ParentScopeOrNamespace.HandleType != HandleType.NamespaceDefinition) { break; // Should have reached the root namespace first but this helper is for ToString() - better to } // return partial information than crash. namespaceHandle = namespaceDefinition.ParentScopeOrNamespace.ToNamespaceDefinitionHandle(reader); } } return(ConvertBackTickNameToNameWithReducerInputFormat(s, genericParameterOffsets)); }
private static string GetTypeFullNameFromTypeDef(TypeDefinitionHandle typeDefinitionHandle, MetadataReader reader) { string s; TypeDefinition typeDefinition = typeDefinitionHandle.GetTypeDefinition(reader); s = typeDefinition.Name.GetString(reader); TypeDefinitionHandle enclosingTypeDefHandle = typeDefinition.EnclosingType; if (!enclosingTypeDefHandle.IsNull(reader)) { string containingTypeName = GetTypeFullNameFromTypeDef(enclosingTypeDefHandle, reader); s = containingTypeName + "+" + s; } else { NamespaceDefinitionHandle namespaceHandle = typeDefinition.NamespaceDefinition; for (;;) { NamespaceDefinition namespaceDefinition = namespaceHandle.GetNamespaceDefinition(reader); string namespacePart = namespaceDefinition.Name.GetStringOrNull(reader); if (namespacePart == null) { break; // Reached the root namespace. } s = namespacePart + "." + s; if (namespaceDefinition.ParentScopeOrNamespace.HandleType != HandleType.NamespaceDefinition) { break; // Should have reached the root namespace first but this helper is for ToString() - better to } // return partial information than crash. namespaceHandle = namespaceDefinition.ParentScopeOrNamespace.ToNamespaceDefinitionHandle(reader); } } return(s); }
public NativeFormatEnumInfoImplementation(Type enumType, MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle) : base(enumType) { _reader = reader; _typeDefinition = typeDefinitionHandle.GetTypeDefinition(reader); }
private static String GetTypeFullNameFromTypeDef(TypeDefinitionHandle typeDefinitionHandle, MetadataReader reader, List<int> genericParameterOffsets) { String s = ""; TypeDefinition typeDefinition = typeDefinitionHandle.GetTypeDefinition(reader); s = typeDefinition.Name.GetString(reader); TypeDefinitionHandle enclosingTypeDefHandle = typeDefinition.EnclosingType; if (!enclosingTypeDefHandle.IsNull(reader)) { String containingTypeName = GetTypeFullNameFromTypeDef(enclosingTypeDefHandle, reader, genericParameterOffsets); s = containingTypeName + "." + s; } else { NamespaceDefinitionHandle namespaceHandle = typeDefinition.NamespaceDefinition; for (; ;) { NamespaceDefinition namespaceDefinition = namespaceHandle.GetNamespaceDefinition(reader); String namespacePart = namespaceDefinition.Name.GetStringOrNull(reader); if (namespacePart == null) break; // Reached the root namespace. s = namespacePart + "." + s; if (namespaceDefinition.ParentScopeOrNamespace.HandleType != HandleType.NamespaceDefinition) break; // Should have reached the root namespace first but this helper is for ToString() - better to // return partial information than crash. namespaceHandle = namespaceDefinition.ParentScopeOrNamespace.ToNamespaceDefinitionHandle(reader); } } return ConvertBackTickNameToNameWithReducerInputFormat(s, genericParameterOffsets); }
private static String NonQualifiedTypeName(this Type type) { RuntimeType runtimeType = type as RuntimeType; if (runtimeType == null) { return(null); } if (runtimeType.HasElementType) { String elementTypeName = runtimeType.InternalRuntimeElementType.NonQualifiedTypeName(); if (elementTypeName == null) { return(null); } String suffix; if (runtimeType.IsArray) { int rank = runtimeType.GetArrayRank(); if (rank == 1) { suffix = "[" + (runtimeType.InternalIsMultiDimArray ? "*" : "") + "]"; } else { suffix = "[" + new String(',', rank - 1) + "]"; } } else if (runtimeType.IsByRef) { suffix = "&"; } else if (runtimeType.IsPointer) { suffix = "*"; } else { return(null); } return(elementTypeName + suffix); } else if (runtimeType.IsGenericParameter) { return(null); } else if (runtimeType.IsConstructedGenericType) { StringBuilder sb = new StringBuilder(); String genericTypeDefinitionTypeName = runtimeType.GetGenericTypeDefinition().NonQualifiedTypeName(); if (genericTypeDefinitionTypeName == null) { return(null); } sb.Append(genericTypeDefinitionTypeName); sb.Append("["); String sep = ""; foreach (RuntimeType ga in runtimeType.InternalRuntimeGenericTypeArguments) { String gaTypeName = ga.AssemblyQualifiedTypeName(); if (gaTypeName == null) { return(null); } sb.Append(sep + "[" + gaTypeName + "]"); sep = ","; } sb.Append("]"); return(sb.ToString()); } else { RuntimeNamedTypeInfo runtimeNamedTypeInfo = type.GetTypeInfo() as RuntimeNamedTypeInfo; if (runtimeNamedTypeInfo == null) { return(null); } MetadataReader reader = runtimeNamedTypeInfo.Reader; String s = ""; TypeDefinitionHandle typeDefinitionHandle = runtimeNamedTypeInfo.TypeDefinitionHandle; NamespaceDefinitionHandle namespaceDefinitionHandle; do { TypeDefinition typeDefinition = typeDefinitionHandle.GetTypeDefinition(reader); String name = typeDefinition.Name.GetString(reader); if (s == "") { s = name; } else { s = name + "+" + s; } namespaceDefinitionHandle = typeDefinition.NamespaceDefinition; typeDefinitionHandle = typeDefinition.EnclosingType; }while (!typeDefinitionHandle.IsNull(reader)); NamespaceChain namespaceChain = new NamespaceChain(reader, namespaceDefinitionHandle); String ns = namespaceChain.NameSpace; if (ns != null) { s = ns + "." + s; } return(s); } }
public sealed override IEnumerable<CustomAttributeData> GetPsuedoCustomAttributes(MetadataReader reader, FieldHandle fieldHandle, TypeDefinitionHandle declaringTypeHandle) { TypeAttributes layoutKind = declaringTypeHandle.GetTypeDefinition(reader).Flags & TypeAttributes.LayoutMask; if (layoutKind == TypeAttributes.ExplicitLayout) { int offset = (int)(fieldHandle.GetField(reader).Offset); CustomAttributeTypedArgument offsetArgument = ExtensibleCustomAttributeData.CreateCustomAttributeTypedArgument(typeof(Int32), offset); yield return ReflectionCoreExecution.ExecutionDomain.GetCustomAttributeData(typeof(FieldOffsetAttribute), new CustomAttributeTypedArgument[] { offsetArgument }, null); } }
public EnumInfoImplementation(Type enumType, MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle) { _enumType = enumType; _reader = reader; _typeDefinition = typeDefinitionHandle.GetTypeDefinition(reader); }
public sealed override IEnumerable<CustomAttributeData> GetPsuedoCustomAttributes(MetadataReader reader, TypeDefinitionHandle typeDefinitionHandle) { TypeAttributes attributes = typeDefinitionHandle.GetTypeDefinition(reader).Flags; if (0 != (attributes & TypeAttributes.Import)) yield return ReflectionCoreExecution.ExecutionDomain.GetCustomAttributeData(typeof(ComImportAttribute), null, null); }