コード例 #1
0
        protected override void ScanCore(MemberImportingOptions options, List <MemberImporter> importList)
        {
            //Type
            var type = (TypeSpecification)Member;

            //Checks if the type is a generic instance type
            MemberImporter importer;

            if (type is GenericInstanceType)
            {
                importer = new GenericInstanceTypeImporter(type, Session.Destination, Session).Scan(options);
                importList.Add(importer);
                importer.ImportFinished += t => retType = (TypeSpecification)t;
                return;
            }

            //Creates the importer for the element type
            importer = Helpers.CreateTypeImporter(type.ElementType, Session, importList, options);

            //Switches on the metadata type of the specification
            switch (type.MetadataType)
            {
            case MetadataType.Pointer:
                importer.ImportFinished += t => retType = new PointerType((TypeReference)t);
                break;

            case MetadataType.ByReference:
                importer.ImportFinished += t => retType = new ByReferenceType((TypeReference)t);
                break;

            default:
                throw new NotImplementedException();
            }
        }
コード例 #2
0
        protected override void ScanCore(MemberImportingOptions options, List<MemberImporter> importList)
        {
            //Type
            var type = (TypeSpecification)Member;

            //Checks if the type is a generic instance type
            MemberImporter importer;
            if (type is GenericInstanceType)
            {
                importer = new GenericInstanceTypeImporter(type, Session.Destination, Session).Scan(options);
                importList.Add(importer);
                importer.ImportFinished += t => retType = (TypeSpecification)t;
                return;
            }

            //Creates the importer for the element type
            importer = Helpers.CreateTypeImporter(type.ElementType, Session, importList, options);

            //Switches on the metadata type of the specification
            switch (type.MetadataType)
            {
                case MetadataType.Pointer:
                    importer.ImportFinished += t => retType = new PointerType((TypeReference)t);
                    break;
                case MetadataType.ByReference:
                    importer.ImportFinished += t => retType = new ByReferenceType((TypeReference)t);
                    break;
                default:
                    throw new NotImplementedException();
            }
        }