public static TypeReference MakeGenericType(this TypeReference self, params TypeReference [] arguments) { if (self.GenericParameters.Count != arguments.Length) throw new ArgumentException (); var instance = new GenericInstanceType (self); foreach (var argument in arguments) instance.GenericArguments.Add (argument); return instance; }
static bool AreSame (GenericInstanceType a, GenericInstanceType b) { if (a.GenericArguments.Count != b.GenericArguments.Count) return false; for (int i = 0; i < a.GenericArguments.Count; i++) if (!AreSame (a.GenericArguments [i], b.GenericArguments [i])) return false; return true; }