MvcContrib Grid 구성 요소를 보고 있으며 Grid 구문에 사용되는 구문 트릭에 매료되었지만 동시에 격퇴되었습니다 .
.Attributes(style => "width:100%")
위의 구문은 생성 된 HTML의 스타일 속성을로 설정합니다 width:100%
. 이제주의를 기울이면 '스타일'은 어디에도 지정되지 않으며 표현식의 매개 변수 이름 에서 추론됩니다 ! 나는 이것을 파헤쳐 서 '매직'이 일어나는 곳을 찾았습니다.
Hash(params Func<object, TValue>[] hash)
{
foreach (var func in hash)
{
Add(func.Method.GetParameters()[0].Name, func(null));
}
}
실제로 코드는 형식, 컴파일 시간, 매개 변수 이름을 사용하여 속성 이름-값 쌍의 사전을 만듭니다. 결과 구문 구조는 실제로 매우 표현력이 뛰어나지 만 동시에 매우 위험합니다. 람다 식을 일반적으로 사용하면 부작용없이 사용 된 이름 을 대체 할 수 있습니다 . 나는라는 책에서 예를 볼 collection.ForEach(book => Fire.Burn(book))
나는 내 코드에서 쓸 수 있습니다 알고 collection.ForEach(log => Fire.Burn(log))
그리고 그것은 같은 일을 의미합니다 . 그러나 MvcContrib Grid 구문이 갑자기 여기에서 변수에 대해 선택한 이름을 기반으로 적극적으로보고 결정하는 코드를 찾습니다!
C # 3.5 / 4.0 커뮤니티 및 람다 식 애호가들과의 공통 관행입니까? 아니면 내가 걱정해서는 안되는 불량한 트릭 매버릭입니까?