Esempio n. 1
0
        void AddConstraints(DefaultUnresolvedTypeParameter tp, IKVM.Reflection.Type g)
        {
            if (g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.Contravariant)) {
                tp.Variance = VarianceModifier.Contravariant;
            } else if (g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.Covariant)) {
                tp.Variance = VarianceModifier.Covariant;
            }

            tp.HasReferenceTypeConstraint = g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.ReferenceTypeConstraint);
            tp.HasValueTypeConstraint = g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.NotNullableValueTypeConstraint);
            tp.HasDefaultConstructorConstraint = g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.DefaultConstructorConstraint);

            foreach (var constraint in g.GetGenericParameterConstraints ()) {
                tp.Constraints.Add(ReadTypeReference(constraint));
            }
        }