C# 调用T为类型的泛型方法

C# 调用T为类型的泛型方法,c#,generics,reflection,C#,Generics,Reflection,有一种通用方法可以从实体中选择字段,如下所示 public object GetOrderDynamically<T>(Expression selectPredicate, Expression predicate, Type type) { var order = orderFacade.FetchMulti((Expression<Func<Order, bool>>) predicate).AsQueryable();

有一种通用方法可以从实体中选择字段,如下所示

public object GetOrderDynamically<T>(Expression selectPredicate, Expression predicate, Type type)
    {
        var order = orderFacade.FetchMulti((Expression<Func<Order, bool>>) predicate).AsQueryable();
        return order.Select((Expression<Func<Order, T>>)selectPredicate).FirstOrDefault();

    }
公共对象GetOrderDynamic(表达式selectPredicate、表达式谓词、类型)
{
var order=orderFacade.FetchMulti((表达式)谓词).AsQueryable();
返回顺序.Select((表达式)selectPredicate).FirstOrDefault();
}
调用该方法的搜索结果为

问题:我想澄清所选字段的类型。但该方法位于业务层,我可以将其与接口一起使用。实际上,业务层类将被注入到我的IoC类中

不知何故,我想用反射调用我的方法,反射是通过注入实例化的,并且能够将T设置为一个类型


任何帮助。谢谢

您想使用MethodInfo上提供的MakeGenericMethod方法,例如

    someTarget.GetType()
        .GetMethod("SomeGenericMethod")
        .MakeGenericMethod(typeof(SomeGenericArgument)
        .Invoke(someTarget, someParameters);
另见:

编辑-例如给定的示例

getOrderDynamic(selectExp,predicateExp);-乌诺斯 巴盖伊5分钟前


你想得到什么还不清楚。。。试着写下如何调用该方法以及希望如何调用该方法。你是在问如何通过反射调用泛型方法吗?目前我还不太清楚……我想这样称呼它:var tt=typeof(Datetime);getOrderDynamic(selectExp、predicateExp);混合使用泛型和反射显然不是一个好主意。如果该方法采用
类型
,则它不应该也具有表示相同内容的
——并且通过反射调用它不会利用
。您也可以返回
对象
并完全忘记
。但是我想调用我的实例的方法,我不知道如何调用。someTarget是您的实例。
    orderBiz.GetType().GetMethod("GetOrderDynamically").MakeGenericMethod(tt).Invoke(orderBiz, new object [] { selectExp, predicateExp });