private static void ProcessGenerics(IEnumerable<RppVariantTypeParam> typeParams, IEnumerable<RppGenericParameter> genericParameters) { genericParameters.EachPair(typeParams, (genericParam, typeParam) => { genericParam.Constraint = typeParam.ConstraintType; if (typeParam.ConstraintType != null) { if (typeParam.ConstraintType.IsClass || typeParam.ConstraintType.IsGenericParameter) { genericParam.Type.BaseType = typeParam.ConstraintType; } else { throw new Exception("Interfaces and value types are not supported yet"); } } genericParam.Variance = GetVariance(typeParam.Variant); }); }
public static void UpdateGenericParameters(IEnumerable<RppGenericParameter> genericParameters, IEnumerable<GenericTypeParameterBuilder> nativeGenericParameters) { genericParameters.EachPair(nativeGenericParameters, UpdateGenericParameter); }