2016-11-12 1 views
-1

개별 코드를 변경하지 않고도 프로젝트의 모든 코드 파일에서 LINQ의 모든 사용을 바꾸기 위해 다른 코드를 삽입하고 싶습니다. 이처럼 : 한 곳에서 전 세계적으로 Company.OtherLinqExtensions 대신 여기 LINQ-확장을 호출하는다른 클래스를 호출하기 위해 LINQ의 사용을 전역으로 바꿉니다.

var arr = items.Where(i => i.Price > 10).Select(i => i.Name).ToArray(); 

내가 대신이 클래스로 리디렉션합니다.

여기 저기에 "System.Linq 사용"이 많이 있습니다. using 문을 모두 변경하지 않고 Company.OtherLinqExtensions으로 리디렉션하는 방법은 무엇입니까?

+0

교체해야하는 표현식의 예를 제공 할 수 있습니까? 그리고 OtherLinqExtensions에서 사용 된 방법은 어떻게 생겼습니까? – Alexei

+0

아마도 내가 더 나은 방법으로 아마도 나중에 무엇을 설명하는이 질문을 발견 : http://stackoverflow.com/questions/1451099/how-to-override-an-existing-extension-method –

답변

0

설명한 클래스에서 LINQ를 사용하고 using System.Linq 선언이있는 네임 스페이스 My.Company에 클래스가 있다고 가정합니다.

namespace My.Company { // OR namespace My { 
    public static class OtherLinqExtensions { 
     public static IEnumerable<T> Select<T, TResult>(this IEnumerable<T> items, Func<T, TResult> selector) { 
      // do your stuff 
     } 
    } 
} 

을 다음 : 그런 다음 클래스에 LINQ 방법에 대한 모든 호출, 당신은 단지 ("내"와 같은) 어떤 부모 네임 스페이스에서 같은 My.Company 네임 스페이스 또는에서 클래스를 선언해야 "재"로 , 모든 확장 메소드는 이제 OtherLinqExtensions 확장을 호출합니다 (물론 버전이 표준 linq 선언과 정확히 일치해야합니다).

+0

감사! 그게 내가 원하는거야! –