簡體   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