public static ReadOnlyCollection <TypeSlim> GetGenericArguments(this MethodInfoSlim method) { return(method switch { GenericMethodInfoSlim gen => gen.GenericArguments, GenericDefinitionMethodInfoSlim def => def.GenericParameterTypes, _ => throw new InvalidOperationException(), });
protected override int VisitGenericDefinitionMethod(GenericDefinitionMethodInfoSlim method) { _typeHasher.Push(method.GenericParameterTypes); var arity = method.GenericParameterTypes.Count; var res = Combine((int)method.MemberType, Visit(method.DeclaringType), Visit(method.ReturnType), Visit(method.Name), arity, Visit(method.ParameterTypes)); _typeHasher.Pop(); return(res); }
protected override MemberInfoSlim VisitGenericDefinitionMethod(GenericDefinitionMethodInfoSlim method) { return(SlimType.GetGenericDefinitionMethod("Foo", new TypeSlim[] { TypeSlim.GenericParameter("T") }.ToReadOnly(), EmptyReadOnlyCollection <TypeSlim> .Instance, returnType: null)); }
protected override int VisitGenericDefinitionMethod(GenericDefinitionMethodInfoSlim method) => 40;
private static void AssertAreSameGenericDefinitionMethod(MethodInfo methodInfo, GenericDefinitionMethodInfoSlim genericDefinitionMethodInfoSlim) { Assert.AreEqual(methodInfo.Name, genericDefinitionMethodInfoSlim.Name); Assert.AreEqual(methodInfo.GetGenericArguments().Length, genericDefinitionMethodInfoSlim.GenericParameterTypes.Count); }
public OpenGenericMethodDef(TypeRef declaringType, GenericDefinitionMethodInfoSlim method, TypeRef returnType, params TypeRef[] parameters) : base(declaringType, method, returnType, parameters) { }