如何将一种类型的表达式树转换为不同的表达式类型?
如果我有两个几乎相同的类 Animal
和 AnimalViewModel
以及与视图模型相关的表达式树,我如何将其转换为 Animal
?
public class Animal
{
public string Species { get; set; }
public string Name { get; set; }
public string Sound { get; set; }
}
public class AnimalViewModel : ViewModelBase
{
public string Species { get; set; }
public string Name { get; set; }
public string Sound { get; set; }
}
如何将 Expression
转换为 Expression
?
public static Expression<Func<Animal,bool>> Translate (Expression<Func<AnimalViewModel,bool>> expression)
{
// What goes here? I assume I have to traverse the tree somehow.
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一位完成这项工作的访客。
.Body
,替换参数,并将针对 old 类型的任何成员访问切换为 new 类型上的类似命名成员,:
代码 如果你有
x.Something.Name
你可能需要更加小心,但这应该会给你一个合理的方法。Here's a visitor that does the job.
.Body
of the tree, substituting the parameter, and switching any member-access against the old type to a like-named member on the new typeCode:
Note that if you have
x.Something.Name
you might need to be a bit more careful, but this should get you a reasonable way.您是否尝试过 Automapper 来处理类似的事情?
Have you tried Automapper for something like this?