private static CqlQuery <T> AddSort <T>(CqlQuery <T> query, Sort sort) { var propertyType = typeof(T).GetProperty(sort.Path).PropertyType; return(GenericMethod.Invoke(() => AddSort <T, object>(query, sort), new[] { typeof(T), typeof(object) }, new[] { typeof(T), propertyType })); }
public void InvokeWithGenericMethodReturnsCorrectResult(Type targetType, int index, object values) { var method = (from mi in targetType .GetMethods(BindingFlags.Static | BindingFlags.Public) select mi).ElementAt(index); var factory = new DelegatingMethodFactory(); factory.OnCreate = m => new StaticMethod(m); var sut = new GenericMethod(method, factory); var result = sut.Invoke((object[])values); Assert.IsAssignableFrom(targetType, result); }
public void InvokeWithGenericMethodThatCannotBeInferedThrows(Type targetType, int index, object values) { var method = (from mi in targetType .GetMethods(BindingFlags.Static | BindingFlags.Public) select mi).ElementAt(index); var factory = new DelegatingMethodFactory(); factory.OnCreate = m => new StaticMethod(m); var sut = new GenericMethod(method, factory); var exception = Assert.Throws <TypeArgumentsCannotBeInferredException>( () => sut.Invoke((object[])values)); Assert.Contains(method.Name, exception.Message); }
public static IDbConnector GetConnector(this ISchemaRegistry registry, string typeIdentifier) { var type = registry.GetTypeByTypeIdentifier(typeIdentifier); return(GenericMethod.Invoke(() => registry.GetSchemaByTypeIdentifier(typeIdentifier).ConnectorsFactory.CreateConnector <object>(), typeof(object), type)); }
private static IOrderedQueryable <T> AddSort(IOrderedQueryable <T> query, Sort sort) { var propertyType = typeof(T).GetProperty(sort.Path).PropertyType; return(GenericMethod.Invoke(() => AddSort <object>(query, sort), new[] { typeof(object) }, new[] { propertyType })); }