public DmdExportedTypeCOMD(DmdComMetadataReader reader, uint rid, IList <DmdCustomModifier> customModifiers) : base(reader.Module, rid, customModifiers)
        {
            this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
            reader.Dispatcher.VerifyAccess();

            uint token = 0x27000000 + rid;

            DmdTypeUtilities.SplitFullName(MDAPI.GetExportedTypeName(reader.MetaDataAssemblyImport, token) ?? string.Empty, out var @namespace, out var name);
            MetadataNamespace = @namespace;
            MetadataName      = name;

            MDAPI.GetExportedTypeProps(reader.MetaDataAssemblyImport, token, out var implToken, out _, out _);
            switch (implToken >> 24)
            {
            case 0x23:
                TypeScope = new DmdTypeScope(reader.ReadAssemblyName_COMThread(implToken & 0x00FFFFFF));
                break;

            case 0x26:
                var moduleName = MDAPI.GetFileName(reader.MetaDataAssemblyImport, implToken) ?? string.Empty;
                TypeScope = new DmdTypeScope(reader.GetName(), moduleName);
                break;

            case 0x27:
                TypeScope     = DmdTypeScope.Invalid;
                baseTypeToken = (int)implToken;
                break;

            default:
                TypeScope = DmdTypeScope.Invalid;
                break;
            }
        }
 public DmdParameterDefCOMD(DmdComMetadataReader reader, uint rid, string name, DmdParameterAttributes attributes, DmdMemberInfo member, int position, DmdType parameterType) : base(rid, member, position, parameterType)
 {
     this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
     reader.Dispatcher.VerifyAccess();
     Name       = name;      // Null is allowed
     Attributes = attributes;
 }
Esempio n. 3
0
 public DmdMethodDefCOMD(DmdComMetadataReader reader, DmdMethodAttributes attributes, DmdMethodImplAttributes implementationFlags, uint rid, string name, DmdType declaringType, DmdType reflectedType) : base(rid, declaringType, reflectedType)
 {
     this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
     reader.Dispatcher.VerifyAccess();
     MethodImplementationFlags = implementationFlags;
     Attributes      = attributes;
     Name            = name ?? throw new ArgumentNullException(nameof(name));
     methodSignature = reader.ReadMethodSignature_COMThread(MDAPI.GetMethodSignatureBlob(reader.MetaDataImport, 0x06000000 + rid), DeclaringType.GetGenericArguments(), GetGenericArguments(), isProperty: false);
 }
Esempio n. 4
0
        public DmdPropertyDefCOMD(DmdComMetadataReader reader, uint rid, DmdType declaringType, DmdType reflectedType) : base(rid, declaringType, reflectedType)
        {
            this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
            reader.Dispatcher.VerifyAccess();
            uint token = 0x17000000 + rid;

            Name            = MDAPI.GetPropertyName(reader.MetaDataImport, token) ?? string.Empty;
            Attributes      = MDAPI.GetPropertyAttributes(reader.MetaDataImport, token);
            methodSignature = reader.ReadMethodSignature_COMThread(MDAPI.GetPropertySignatureBlob(reader.MetaDataImport, token), DeclaringType !.GetGenericArguments(), null, isProperty: true);
        }
Esempio n. 5
0
        public DmdTypeDefCOMD(DmdComMetadataReader reader, uint rid, IList <DmdCustomModifier> customModifiers) : base(rid, customModifiers)
        {
            this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
            reader.Dispatcher.VerifyAccess();
            uint token = 0x02000000 + rid;

            DmdTypeUtilities.SplitFullName(MDAPI.GetTypeDefName(reader.MetaDataImport, token) ?? string.Empty, out var @namespace, out var name);
            MetadataNamespace = @namespace;
            MetadataName      = name;
            Attributes        = FixAttributes(MDAPI.GetTypeDefAttributes(reader.MetaDataImport, token) ?? 0);
        }
Esempio n. 6
0
        public DmdFieldDefCOMD(DmdComMetadataReader reader, uint rid, DmdType declaringType, DmdType reflectedType) : base(rid, declaringType, reflectedType)
        {
            this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
            reader.Dispatcher.VerifyAccess();

            uint token = 0x04000000 + rid;

            Attributes = MDAPI.GetFieldAttributes(reader.MetaDataImport, token);
            Name       = MDAPI.GetFieldName(reader.MetaDataImport, token) ?? string.Empty;
            FieldType  = reader.ReadFieldType_COMThread(MDAPI.GetFieldSignatureBlob(reader.MetaDataImport, token), DeclaringType.GetGenericArguments());
        }
Esempio n. 7
0
        public DmdEventDefCOMD(DmdComMetadataReader reader, uint rid, DmdType declaringType, DmdType reflectedType) : base(rid, declaringType, reflectedType)
        {
            this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
            reader.Dispatcher.VerifyAccess();
            uint token = 0x14000000 + rid;

            Name       = MDAPI.GetEventName(reader.MetaDataImport, token) ?? string.Empty;
            Attributes = MDAPI.GetEventAttributes(reader.MetaDataImport, token);
            var eventTypeToken = MDAPI.GetEventTypeToken(reader.MetaDataImport, token);

            EventHandlerType = reader.ResolveType((int)eventTypeToken, DeclaringType !.GetGenericArguments(), null, DmdResolveOptions.None) ?? reader.Module.AppDomain.System_Void;
        }
Esempio n. 8
0
        public DmdTypeRefCOMD(DmdComMetadataReader reader, uint rid, IList <DmdCustomModifier> customModifiers) : base(reader.Module, rid, customModifiers)
        {
            this.reader = reader ?? throw new ArgumentNullException(nameof(reader));
            reader.Dispatcher.VerifyAccess();
            uint token = 0x01000000 + rid;

            DmdTypeUtilities.SplitFullName(MDAPI.GetTypeRefName(reader.MetaDataImport, token) ?? string.Empty, out var @namespace, out var name);
            MetadataNamespace = @namespace;
            MetadataName      = name;

            var resScopeToken = MDAPI.GetTypeRefResolutionScope(reader.MetaDataImport, token);

            switch (resScopeToken >> 24)
            {
            case 0x00:
                TypeScope = new DmdTypeScope(reader.Module);
                break;

            case 0x01:
                TypeScope     = DmdTypeScope.Invalid;
                declTypeToken = (int)resScopeToken;
                break;

            case 0x1A:
                var moduleName = MDAPI.GetModuleRefName(reader.MetaDataImport, resScopeToken) ?? string.Empty;
                TypeScope = new DmdTypeScope(reader.GetName(), moduleName);
                break;

            case 0x23:
                TypeScope = new DmdTypeScope(reader.ReadAssemblyName_COMThread(resScopeToken & 0x00FFFFFF));
                break;

            default:
                TypeScope = DmdTypeScope.Invalid;
                break;
            }
        }
Esempio n. 9
0
 public DmdGenericParameterTypeCOMD(DmdComMetadataReader reader, uint rid, DmdTypeBase declaringType, string name, int position, DmdGenericParameterAttributes attributes, IList <DmdCustomModifier> customModifiers)
     : base(rid, declaringType, name, position, attributes, customModifiers) =>
     this.reader = reader ?? throw new ArgumentNullException(nameof(reader));