예제 #1
0
        public CilGenericField(IModuleTypeSystem moduleTypeSystem, RuntimeField genericField, FieldSignature signature, CilGenericType declaringType)
            : base(moduleTypeSystem, declaringType)
        {
            this.Signature = signature;
            this.genericField = genericField;
            this.Attributes = genericField.Attributes;
            this.SetAttributes(genericField.CustomAttributes);

            return;
        }
        private void ScheduleDependencyForCompilation(SigType signatureType)
        {
            RuntimeType runtimeType = null;

            TypeSigType typeSigType = signatureType as TypeSigType;
            if (typeSigType != null)
            {
                runtimeType = this.LoadDependentType(typeSigType.Token);
            }
            else
            {
                GenericInstSigType genericSignatureType = signatureType as GenericInstSigType;
                if (genericSignatureType != null)
                {
                    RuntimeType genericType = this.LoadDependentType(genericSignatureType.BaseType.Token);
                    Console.WriteLine(@"Loaded generic type {0}", genericType.FullName);

                    runtimeType = new CilGenericType(genericType, this.Assembly, genericSignatureType, this.Method);
                }
            }

            if (runtimeType != null)
            {
                this.compilationScheduler.ScheduleTypeForCompilation(runtimeType);
            }
        }