System.Linq.Expressions.ExpressionVisitor
에는 VisitExtension
이라는 메서드가 있는데이 메서드는 Expression
의 VisitChildren
메서드를 호출하는 것 외에는 아무것도 수행하지 않는 것 같습니다.System.Linq.Expressions.ExpressionVisitor.VisitExtension 및 System.Linq.Expressions.ExpressionType.Extension은 무엇입니까?
protected internal virtual Expression VisitExtension(Expression node)
{
return node.VisitChildren(this);
}
나는 VisitChildren
의 기능을 이해합니다. 나는 또한이 가상 구현이 오버라이드 될 수 있다는 것을 이해한다. 그래서 저는 documentation of the method on MSDN에서 모여서 간단히 말하면됩니다 :
확장 표현의 하위를 방문합니다. 특정 확장 노드를 방문하거나 다시 쓰려면이 값을 재정의 할 수 있습니다. 재정의하지 않으면이 메서드는 노드에 자식을 이동할 기회를 제공하는 VisitChildren을 호출합니다. 기본적으로 VisitChildren은 노드를 줄이려고 시도합니다.
이 설명이 도움이되지 않습니다. 구체적으로, 나를 이해할 수 없게 만드는 구절은 이거나 "특정 확장 노드를 다시 작성"입니다.
나머지 부분은 표현식이 하위 표현식으로 축소되거나 분류되는 것과 관련이 있습니다.
또한 동일한 네임 스페이스에는 ExpressionType
이라는 열거 형을 사용합니다.이 열거 형은 제가 잘 이해하고있는 목적입니다. 그러나 모든 멤버 중 Extension
이라는 멤버가 있는데 현재 알고있는 구문 토큰에 매핑 할 수 없습니다.
documentation in this instance도 역시 불편하지 않을 수 있습니다. 다음과 같이 값 Extension
을 설명합니다.
확장 표현식입니다.
두 개의 - ExpressionType.Extension
과 ExpressionVisitor.VisitExtension
-이 관련되어 있음은 명백합니다.
내선은 무엇입니까? 확실히 눈에 띄게 명백한 것처럼 확장 메서드는 이러한 맥락에서 아무 것도 없습니다. 어떤 구문 인공물이 확장자이라는 여기에 해당합니까?
https://www.re-motion.org/blogs/mix/2010/02/18/net-4-0-expression-trees- 확장 표현식 /? –
고마워요, 제 로인. URL이 읽는 방법부터 내 질문에 대한 답변이 매우 좋은 것처럼 보입니다. 그러나 나는 그것을 열 수 없다. 사실 꽤 오랜 시간 동안, 몇 달이 걸릴 수도 있습니다. 다시 모션 프로젝트 웹 사이트를 열 수 없었습니다. 나는 작년 초에 그것을 열 수있었습니다. –