.NET 2.0의 C# 3.0 호환성
-
05-07-2019 - |
문제
무엇입니까 C# 3.0 .NET 2.0 프레임 워크를 대상으로하는 응용 프로그램에서 사용할 수있는 언어 기능?
추신 : 나는 람다 표현과 같은 사람이 거의 없다 var
예어
해결책
여기를 참조하십시오 :
.NET 2.0 응용 프로그램에서 C# 3.0 (.NET 3.5) 구문 사용
.NET 2.0 프레임 워크를 목표로하고 C# 3.0을 사용할 때 할 수 있고 할 수없는 일을 완전히 줄이십시오.
요약해서 말하자면:
- 너 캔트 새로운 3.5 어셈블리 (System.Data.linq, System.xml.linq, System.core)를 사용하십시오.
- 너 캔트 사용 LINQ/쿼리 확장 또는 확장 방법 (그러나 LINQ/쿼리 구문 및 확장 방법을 모두 사용하는 방법은 아래를 참조하십시오!).
- 너 ~할 수 있다 사용 var 키워드, 람다 진술, 객체 초기화기, 익명 유형 & 자동 구현 특성.
그러나 확장 방법 분류 작업은 작동하려면 "System.Runtime.comPilerServices.extensionAttribute"가 필요 하며이 유형은 System.core DLL (.NET 2.0 프레임 워크의 일부가 아님) 내에서 찾을 수 있습니다.
쿼리 구문을 "상자 밖으로"사용할 수는 없지만, 제 3 자 DLL (예 : Linqbridge) 사용. 이 DLL은 .NET 2.0 프레임 워크를 타겟팅 할 때 LINQ를 수행하는 데 필요한 많은 "누락 된"유형을 효과적으로 다시 이식합니다. 또한 작동하는 데 필요한 "ExtensionAttribute"유형을 구현하므로 프로젝트에서 LINQBRIDGE DLL을 추가/참조하면 LINQ, 쿼리 구문/표현식 및 확장 방법을 활성화합니다!
다른 팁
나는있다 바로이 주제에 대한 기사.
간단히 :
지원 :
- 자동으로 구현 된 속성, 암시 적으로 입력 한 로컬 변수 및 배열, 객체 및 수집 초기화, 익명 유형, 부분 메소드, 람다 표현식이 대의원 유형으로 변환되었습니다.
부분적으로 지원 :
- 확장 방법 (속성 필요) 및 쿼리 표현식 (Linqbridge와 같은 것이 유용하기 위해 필요함).
지원되지 않음 :
- 람다는 표현 나무로 전환되었습니다
사실, 나는 그 표정 나무로의 전환을 들었습니다. ~이다 모노의 구현을 통해 이용 가능합니다 System.Core
. 그래도 아직 시도하지 않았습니다 ... 나는 그렇게 의미를 유지하고 페이지를 업데이트합니다.