我有一个字段(HTML输入文本),我的用户可以在其中输入他想要的属性名称,例如:“name”。有了这个值,我需要在我的对象上返回属性Name的值。 顺便说一句,我必须实现一个深度属性,如User.Contact.PhoneNumber,如果用户键入Contact.PhoneNumber。我能这样做吗?
我正在使用LINQ,因此对象User是延迟加载的。必须或尚未加载属性Contact。
这就是我现在正在尝试的事情:
ParameterExpression input = Expression.Parameter(typeof(User));
var expr = Expression.Property(input, typeof(User).GetProperty("Name"));
var justatest = Expression.Lambda<Func<User, string>>(expr, input).Compile();
答案 0 :(得分:1)
我认为获取属性的属性,例如User.Contact.PhoneNumber可能会变得困难。您需要在语句的范围内使用嵌套的PropertyExpressions。
也许动态linq库会让你更容易: http://www.nuget.org/packages/System.Linq.Dynamic/