2015-03-16 3 views
1

существует общий метод, который выбирает поле от объекта, как показано нижевызова шаблонный метод, который T является тип

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

    } 

Результат поиска для вызова метода был this

проблема: я хочу уточнить тип выбранного поля. но этот метод находится в бизнес-слое, и я могу использовать его с его интерфейсом. на самом деле классы бизнес-слоев будут введены в мой класс с помощью IoC.

Как-то я хочу вызвать мои методы с отражением, которые инстанцированы инъекцией и быть в состоянии установить T как тип

Любая помощь. спасибо

+1

Это не ясно, что вы хотите получить ... Попробуйте написать, как вы вызываете метод, и как вы хотели бы, чтобы вызвать метод. – xanatos

+0

'Тип t = typeof (T)'? – spender

+0

Вы спрашиваете, как вызвать общие методы через отражение? В настоящее время мне немного неясно ... – Chris

ответ

2

Вы хотите использовать MakeGenericMethod метод, который доступен на MethodInfo, например

Смотрите также:

Calling generic method with a type argument known only at execution time

EDIT - Для данного примера

orderBiz.GetOrderDynamically <tt> (selectExp, predicateExp); - Unos baghaii 5 минут назад

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

Но я хочу вызвать метод моего экземпляра, который я не знаю, как позвонить. –

+0

someTarget - ваш экземпляр. –

Смежные вопросы