2010-07-28 5 views
9

좋아, 나는 단지 그것을 얻지 않는다.표현식 트리의 요점은 무엇입니까?

  • 왜 표현의 나무를 사용

    나는 모든에 대해 무엇을 알고 있기없이 주제에 내가 할 수있는만큼에 대해 읽은?

  • 언제 어떻게 사용하겠습니까?
  • 사용시 전반적인 이점은 무엇입니까?

답변

3

식 트리는 원래 맞춤 LINQ 공급자를 만들 수 있도록 작성되었습니다. 기본적으로 LINQ to Objects를 사용하면 표현식 트리를 다루지 않습니다.그러나 LINQ to SQL을 사용하면 LINQ 공급자가 Expression Trees와 함께 작업합니다.

.Net 4.0 Expression Trees API가 확장되어 DLR에서 많이 사용됩니다. 따라서 .NET에 새로운 동적 언어를 추가한다고 가정 할 경우, 필요합니다.

종종 사람들은 표현 트리를 사용하는 방법을 더 많이 발견했습니다. 때때로 ET를 사용하여 리플렉션 대신 오브젝트에 대한 자세한 정보를 얻을 수 있습니다. .NET 4에서는 동적 메서드를 생성하는 데에도 사용할 수 있습니다. 그러나 권장 시나리오가 아닌 고급 트릭과 비슷하다는 것을 기억하십시오.

은 여기에서 살펴 수있는 링크입니다 :

Expression Tree Basics

Getting Information About Objects, Types, and Members with Expression Trees

Generating Dynamic Methods with Expression Trees in Visual Studio 2010

+0

은 그냥 블로그 게시물 읽기 - 좋은 일을! –

0

LINQ 쿼리 공급자 (예 : LINQ 쿼리를 SQL로 변환하는 SQL Server 공급자)를 작성한다고 가정 해 봅니다. 아마도 DB 공급 업체이고 DB 엔진에 대한 지원을 구현하려고합니다. 식 트리를 사용하여 SQL을 빌드합니다.

2

그들은 실제로 매우 유용합니다.

모든 람다 식은 메서드 또는 식 트리가 될 수 있습니다.

메서드는 프레임 워크에서 고유하게 실행됩니다.

표현 트리를 다른 표현으로 변환 할 수 있습니다. 예를 들어 SQL 용 LINQ는 쿼리 식을 SQL 구문으로 변환하고 서버에서 원격으로 실행합니다.

3

표현 트리는 기본적으로 데이터로 처리되는 코드의 파싱 된 비트입니다. 그런 다음 프로그램은 런타임에 원하는대로 데이터를 보간 할 수 있습니다. 이를 통해 비즈니스 논리에 비추어 코드를 해석 할 수 있습니다.

비즈니스 규칙을 정의해야한다고 가정 해보십시오. C#을 기반으로 구문을 정의한 다음 새 규칙을 소스 코드에 직접 기록 할 수 있습니다. 익스프레션 트리 (Expression Tree)로 엔진에 받아들이면 지루한 구문 분석, 구문 검사 및 유형 검사가 이미 수행됩니다. 트리를 실행하고 규칙을 적용하기 만하면됩니다.

0

매우 유용합니다. linq to sql 이외에도 mvc 2.0에 strongly typed html helpers을 만들거나 수학 계산을 위해 GPU를 사용하는 수단을 제공하는 데 사용됩니다. 즉 Brahma project입니다.

기본적으로 표현식 트리는 컴파일 된 표현식을 실행하는 대신 해석 할 수있는 기능을 제공합니다. 그래서 그들은 C#에서 일종의 DSL을 만드는 방법입니다.

2

이처럼 쓰기 일 때 :

var q = from d in Data.Table 
     where d.Name == "SomeName" 
     select d 

그것은 식 트리로 변환. 이 linq 쿼리를 다시 사용할 때 SQL 밑에있는 Linq-to-SQL은이 트리를 사용하여 높은 성능의 SQL 쿼리를 만듭니다.

그래서 '뒷 장면'에서 linq 작업을하고 있습니다.

자신 만의 표현식 트리를 만들 수 있습니다. 동적 쿼리를 만들려는 경우 매우 유용 할 수 있습니다. 이것은 다른 종류의 검색 기준 일 수 있습니다. 심지어 앞 부분을 사용하는 유형을 모른 채로 where-clauses 및 다른 멋진 항목과 함께 여러 내부 조인을 만들 때도 사용할 수 있습니다. 이것은 비록 약간의 반사가 requriers 있지만.

관련 문제