2013-02-08 3 views
6

꽤 오래 동안 Asp.Net MVC로 작업하고 있지만 아주 이상한 질문이 붙어 있습니다. 나는 내가 좋아하는 람다 식을 사용할 수 있도록 모델을 만들 매번 :리플렉션 대신 lambdas를 ASP.NET MVC에서 사용하는 이유는 무엇입니까?

@Html.EditorFor(model=>model.SomeProperty) 

왜 Asp.Net MVC는 아키텍처의 이러한 유형을 사용합니까?

리플렉션을 사용하여 속성을 전달하는 이유가 무엇입니까?

람다 표현식이 더 빠릅니까? 후드 아래에서는 속성 이름을 가져 오는 것이 리플렉션을 사용해야한다는 것입니다. 람다를 사용

+2

면도기 뷰의 모든 레이블/편집/디스플레이에 대해'@ Html.EditorFor (typeof (ParvsModel) .GetProperty ("SomeProperty"), BindingFlags.Public)와 같은 것을 사용 하시겠습니까? – GolfWolf

+3

@ Html.Editor ("SomeProperty")를 사용할 수 있지만 강한 형식을 좋아하는 사람들을 위해 람다 버전이 있습니다. 최근에 블로그 게시물에서이 주제를 다뤘습니다. http://odetocode.com/blogs/scott/archive/2012/11/26/why-all-the-lambdas.aspx – OdeToCode

답변

9

람다> 반사

당신이 얻을 :

  • 디자인 타임, 강력한 형식의 속성 선택기.
  • 기본 제공되는 Visual Studio 리펙토링 도구를 사용하여 리 팩터링을 쉽게 수행 할 수 있습니다.

감사 람다에, 어떤 API는 속성 선택에서 많은 것들을 알 수 있습니다 :

  • 속성 유형입니다.
  • 속성의 개체입니다.
  • 속성 메타 데이터를 검사합니다.

    public static MvcHtmlString EditorFor<TModel, TValue>(
        this HtmlHelper<TModel> html, 
        Expression<Func<TModel, TValue>> expression 
    ) 
    

    그것이 식 트리보다는 일반 람다 같습니다

은 또한, 상기 방법 서명 (http://msdn.microsoft.com/en-us/library/ee402949(v=vs.108).aspx)를 확인한다. 이를 통해 MVC (및 모든 API)는 런타임 중에 리플렉션이 발생하지 않고 더 많은 비헤이비어를 추가하기 위해 표현식을 조작 할 수 있습니다.

는 식 트리에 대해 자세히 알아보기 :

1

내 대답은 인기가되지 않습니다.

저는 람다가 99 %라는 것이 세 가지 이유로 언제나 더 나은 선택이라고 믿습니다.

먼저 개발자가 현명하다고 가정 할 때 아무런 잘못이 없습니다. 다른 대답은 모든 개발자가 당신이 어리 석다는 것을 전제로합니다. 별로.

둘째, Lamdas (et al)는 현대 구문이며 내일은 이미 오늘날보다 더 평범한 상태가됩니다. 프로젝트의 코드는 현재 및 새롭게 등장하는 컨벤션에서 나옵니다.

셋째, "구식"코드를 작성하는 것이 더 쉬워 보이지만 컴파일러가 더 쉽지는 않습니다. 이것은 중요하다. 레거시 접근법은 컴파일러가 개정됨에 따라 개선 될 수있는 기회가 거의 없다. Lambda (et al)는 컴파일러를 확장하여 컴파일러가 시간이 지남에 따라 더 잘 처리 할 수 ​​있도록 도움을 줄 수 있습니다.

요약하면 :

  1. 개발자가
  2. 모두가
  3. 다시 미래의 잠재적 인

을있다하고있다 처리 할 수있는, 나는이 인기가 해답이 될 수 없습니다 알고있다. 그리고 "Simple is Best"는 저의 진언입니다. 유지 관리는 모든 출처에서 중요한 측면입니다. 알 겠어. 그러나 나는 우리가 어림짐작의 일부 진부한 규칙에 현실을 그늘지게하고 있다고 생각합니다.

관련 문제