2010-11-22 1 views
1

질문이 있습니다. 제네릭 형식 매개 변수를 작성하려면 어떻게해야합니까? 나는 표현 트리를 구축을 위해 노력하고 내가 구축 할 수있는 다음 줄이 : 그래서 내가 .Lambda에서 T의 형식 매개 변수를 지정 것으로 예상된다제네릭 형식 매개 변수를 작성하는 방법

var expression = Expression 
       .Lambda<Func<T, bool>>(
        operation, 
        new ParameterExpression[] {parameter}); 

>를하지만의 유형 매개 변수 T는 런타임까지 알 .

도와주세요.

public Expression<Func<T,bool>> BuildExpression<T>(...) 
{ 
    // Whatever you need to do 
    var expression = Expression 
      .Lambda<Func<T, bool>>(
       operation, 
       new ParameterExpression[] {parameter}); 
} 

을 ... 그리고 반사를 통해 메소드를 호출 감사

답변

3

글쎄, 당신은 일반적인 방법을 쓸 수 있습니다. 또한 :

부를 수있는 반사

  • 를 통해 일반 Expression.Lambda 메서드를 호출 할 수있는 이들 중 어느 것에 대한 가장 적합한 방법이 될 수 있습니다. 자세한 내용을 보려면 질문을 편집하십시오.

  • +0

    답변 해 주셔서 감사합니다. – Luka

    +0

    답변 해 주셔서 감사합니다. 내가 만들려고하는 것은 도메인에서 쿼리하기 위해 사용자 인터페이스에서 만들어진 쿼리를 변환하는 유틸리티입니다. 문제는 UI가 도메인이 아닌 DTO 클래스 만 인식하므로 linq 표현식 (personDTO x) => x.Name을 (Person x) => x.Name으로 변환해야한다는 것입니다. 어쨌든 표현을 파싱하고 빌드 할 수있었습니다. 남아있는 것은 마지막 단계입니다. Expression.Lambda >. 문제는이 매개 변수가 런타임에 빌드되기 때문에 매개 변수 T - (실제 도메인 개체 (예 :. Person)의 형식 매개 변수)를 모른다는 것입니다. – Luka

    +0

    @ 루카 : 글쎄, 좀 더 자세한 정보가 있습니다 - 그리고 마지막 옵션이 여기에 가장 적합하다고 생각합니다. –