internal static TypeReference LoadValueType(IBinaryAccessor accessor, Module module) { int token = MetadataToken.DecompressTypeDefOrRef(accessor.ReadCompressedInteger()); var type = LoadTypeDefOrRef(module, token, true); return(type); }
internal static TypeReference LoadTypeDef(Module module, int rid, bool?isValueType = null) { var image = module.Image; var typeRef = image.TypeSignatures[rid - 1]; if (typeRef != null) { if (isValueType.HasValue) { typeRef._isValueType = isValueType; } return(typeRef); } TypeDefRow row; image.GetTypeDef(rid, out row); typeRef = new TypeReference(); typeRef._name = image.GetString(row.Name); typeRef._namespace = image.GetString(row.Namespace); // Owner int enclosingRID; if (image.GetEnclosingTypeByNested(rid, out enclosingRID)) { typeRef._owner = LoadTypeDef(module, enclosingRID); } else { typeRef._owner = ModuleReference.LoadDef(module); } module.AddSignature(ref typeRef); image.TypeSignatures[rid - 1] = typeRef; // Is value type. if (isValueType.HasValue) { typeRef._isValueType = isValueType.Value; } else { int extendsToken = MetadataToken.DecompressTypeDefOrRef(row.Extends); if (!MetadataToken.IsNull(extendsToken)) { var baseType = TypeSignature.Load(module, extendsToken); typeRef._isValueType = GetIsValueType(typeRef, baseType, module); } } return(typeRef); }
private static CustomModifier LoadMod(IBinaryAccessor accessor, Module module, CustomModifierType modType) { int token = MetadataToken.DecompressTypeDefOrRef(accessor.ReadCompressedInteger()); var modifier = Load(module, token); var elementType = Load(accessor, module); return(new CustomModifier(elementType, modifier, modType)); }
protected void LaodBaseType() { _opFlags = _opFlags.SetBitAtIndex(LoadBaseTypeFlag, false); var image = _module.Image; int extendsToken = MetadataToken.DecompressTypeDefOrRef(image.GetTypeDefExtends(_rid)); if (MetadataToken.IsNull(extendsToken)) { return; } _baseType = TypeSignature.Load(_module, extendsToken); }
private void Load() { var image = _module.Image; int[] constraintTokens; image.GetGenericParamConstraintsByOwner(_genericParameter.RID, out constraintTokens); int count = constraintTokens.Length; _list.Capacity = count; for (int i = 0; i < count; i++) { _list.Add(TypeSignature.Load(_module, MetadataToken.DecompressTypeDefOrRef(constraintTokens[i]))); } }
private void Load() { var image = _module.Image; int[] interfaceTokens; image.GetInterfaceImplsByClass(_type.RID, out interfaceTokens); int count = interfaceTokens.Length; _list.Capacity = count; for (int i = 0; i < count; i++) { _list.Add(TypeSignature.Load(_module, MetadataToken.DecompressTypeDefOrRef(interfaceTokens[i]))); } }
protected void Load() { var image = _module.Image; EventRow row; image.GetEvent(_rid, out row); _name = image.GetString(row.Name); _flags = row.Flags; _eventType = TypeSignature.Load(_module, MetadataToken.DecompressTypeDefOrRef(row.EventType)); _opFlags = _opFlags.SetBitAtIndex(LoadAddSemanticFlag, true); _opFlags = _opFlags.SetBitAtIndex(LoadRemoveSemanticFlag, true); _opFlags = _opFlags.SetBitAtIndex(LoadInvokeSemanticFlag, true); }