Exemple #1
0
 public override GenericContext VerifyAndUpdateMethodArguments(int expectedNumberOfMethodArgs)
 {
     if (expectedNumberOfMethodArgs == (int)base.MethodArgs.Length)
     {
         return(this);
     }
     Type[] metadataOnlyTypeVariableRef = new Type[expectedNumberOfMethodArgs];
     for (int i = 0; i < expectedNumberOfMethodArgs; i++)
     {
         metadataOnlyTypeVariableRef[i] = new MetadataOnlyTypeVariableRef(this.m_resolver, this.m_ownerMethod, i);
     }
     return(new OpenGenericContext(base.TypeArgs, metadataOnlyTypeVariableRef));
 }
Exemple #2
0
        public OpenGenericContext(MetadataOnlyModule resolver, Type ownerType, Token ownerMethod) : base(null, null)
        {
            this.m_resolver    = resolver;
            this.m_ownerMethod = ownerMethod;
            int length = (int)ownerType.GetGenericArguments().Length;

            Type[] metadataOnlyTypeVariableRef = new Type[length];
            Token  token = new Token(ownerType.MetadataToken);

            for (int i = 0; i < length; i++)
            {
                metadataOnlyTypeVariableRef[i] = new MetadataOnlyTypeVariableRef(resolver, token, i);
            }
            base.TypeArgs = metadataOnlyTypeVariableRef;
        }
Exemple #3
0
        public override bool Equals(Type other)
        {
            MetadataOnlyTypeVariableRef metadataOnlyTypeVariableRef = other as MetadataOnlyTypeVariableRef;

            if (metadataOnlyTypeVariableRef != null)
            {
                if (!this.Resolver.Equals(metadataOnlyTypeVariableRef.Resolver) || this.m_ownerToken.Value != metadataOnlyTypeVariableRef.m_ownerToken.Value)
                {
                    return(false);
                }
                return(this.m_position == metadataOnlyTypeVariableRef.m_position);
            }
            if (!other.IsGenericParameter)
            {
                return(false);
            }
            bool isMethodVar = this.IsMethodVar == (other.DeclaringMethod != null);

            if (this.m_position == other.GenericParameterPosition)
            {
                return(isMethodVar);
            }
            return(false);
        }