여기 내 질문에 대한 컨텍스트 :대리자 인스턴스를 람다 식으로 캐스팅 할 수 있습니까?
일반적인 기술은 메서드의 매개 변수를 대리자가 아닌 람다 식으로 선언하는 것입니다. 이것은 메서드가 대리자 인스턴스의 본문에서 메서드 호출의 이름을 찾는 것과 같은 흥미로운 작업을 수행하는 식을 검사 할 수 있도록하기위한 것입니다.
Resharper의 인텔리 센스 기능 중 일부가 손실되는 문제가 있습니다. 메서드의 매개 변수가 대리자로 선언 된 경우 Resharper는이 메서드에 대한 호출을 작성할 때 x => x 구문을 사용하여이 메서드에 인수 값을 제공하도록 도와줍니다.
그래서 ... 다시 내 질문에 내가 추적을 할 싶습니다
MethodThatTakesDelegate(s => s.Length);
}
private void MethodThatTakesDelegate(Func<string, object> func)
{
//convert func into expression
//Expression<Func<string, object>> expr = "code I need to write"
MethodThatTakesExpression(expr);
}
private void MethodThatTakesExpression(Expression<Func<string, object>> expr)
{
//code here to determine the name of the property called against string (ie the Length)
}
나는 [이 블로그 엔트리] (http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx)를 통해 광택을 내고 있었고, 직접 과제를 수행하는 것처럼 보였다. . 그게 너에게 효과가 없을까? – plinth