람다 식을 사용하여 속성을 지정하는 API를 개발하고 있습니다.C# : 람다 식 체인의 속성 이름 얻기
public void Foo<T, P>(Expression<Func<T, P>> action)
{
var expression = (MemberExpression)action.Body;
string propertyName = expression.Member.Name;
// ...
}
은 다음과 같이 호출 할 :
Foo((String x) => x.Length);
난 (그냥 이야기하고 명확 무엇을 만들기 위해,이 간단하고 불완전)이 하나와 유사한 코드의이 유명한 조각을 사용하고 있습니다
Foo((MyClass x) => x.Name.Length);
푸 그 속성 이름으로 경로를 분할 할 수 있어야한다 ("Name"
및,917을 :
는 지금은이 같은 속성 이름을 체인에 의해 속성 경로를 지정하고 싶습니다). 합리적인 노력으로이를 수행 할 수있는 방법이 있습니까?
거기에 somehow similar looking question가 있지만 나는 거기에 람다 식을 결합하려고합니다.
Another question도 중첩 된 속성 이름을 처리하지만 실제로 어떤 내용인지는 이해할 수 없습니다.
와우,이 작품, 그것은 매우 간단합니다. 고마워요! –
@StefanSteinegger @StefanSteinegger 이전 질문, 필자도 알아 두어야 할 것은 'expr.ToString(). Split ('. '). Skip (1)'이 더 간단 할 것입니다. :) – asgerhallas
@asgerhallas : you 다른 대답을 추가 할 수 있습니다. –