동적으로 다음 1 (재귀 적으로) 더 깊은 수준에 MemberAcess 표현 만들 싶습니다는
public class Job
{
public string Name { get; set; }
public int Salary { get; set; }
}
public class Employee
{
public string Name { get; set; }
public Job Job { get; set; }
}
을 그리고 동적으로 각 MemberAccesExpressions의 목록을 만들려면
: 이것은 내가 가진 무엇 의사 코드가MemberAccesExpression[] {
{ e => e.Name },
{ e => e.Job.Name },
{ e => e.Job.Name }
}
: 직원의 재산과 직원의 복잡한 회원의 각 속성은, 결과는 다음과 같이해야한다
어떻게 이것을 재귀 적 방법으로 만들 수 있습니까? (TModel 모델, Expression> baseMemberAccess = null) 이라는 선택적 매개 변수를 추가하고 null이 아닌 경우 멤버 식을 baseMemberAccess에 연결하는 방법을 생각했습니다.
P. Type이 원자 유형이 아닌지 확인하는 더 좋은 방법이 있습니다. (prop.PropertyType.Namespace! = "System") ? 내가 표현을 만들려면
: 더 간단하게 누워 노력에 대한 아담
에게,
어떤 도움을 주셔서 감사 편집 결과 (..., 플로트, 문자열 등을 int로하지 않음)
var param = Expression.Parameter(type, "x");
var memberAccess = Expression.PropertyOrField(param, memberName);
return Expression.Lambda<Func<TModel, TMember>>(memberAccess, param);
Employee.Job.Salary에 멤버 액세스이에 상응하는 무엇입니까 :이 Employee.Name하는 멤버 액세스의 나무는 내가 무엇인가?
[XY 문제]를 감지합니다 (http://meta.stackexchange.com/a/66378/168269). 코드로 어떤 문제를 해결하고 싶습니까? –
나는 그것이 명확하지 않다고 생각하지는 않지만 질문을 편집하고 끝 부분에 정확한 문제를 추가했습니다. –
그는 더 큰 문제를 해결하려고 무엇을 요구하고 있습니까? 왜 객체의 모든 멤버 표현식을 수집하려고합니까? –