繁体   English   中英

调用T为类型的通用方法

[英]Call generic method which T is a Type

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

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();

    }

调用方法的搜索结果是这个

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

我想以某种方式调用反射方法,该方法通过注入实例化,并且能够将T设置为Type

任何帮助。 谢谢

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

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

也可以看看:

使用仅在执行时已知的类型参数调用泛型方法

编辑-对于给定的例子

orderBiz.GetOrderDynamically <tt>(selectExp,predicateExp); – unos baghaii 5分钟前

    orderBiz.GetType().GetMethod("GetOrderDynamically").MakeGenericMethod(tt).Invoke(orderBiz, new object [] { selectExp, predicateExp });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM