如何在DTO和目标类之间进行Lambda表达式的智能转换?

时间:2009-08-20 16:37:31

标签: c# visual-studio-2008 lambda

我有一个问题需要解决:

在最高层,我们使用dto。我们在数据层中使用Entity框架,使用实体,将结果转换为dtos。

我们在上层进行了一些自定义搜索,问题是:如何在类之间翻译这些lambda表达式,假设每个属性具有相同的名称和类型?

1 个答案:

答案 0 :(得分:1)

你能编写一个包含公共属性的接口,让相关的类实现该接口,然后对它重写lambdas吗?

编辑:因为你不能这样做,这会变得更加复杂。我看到两个选择:

  1. 在运行时从头开始生成表达式树(很多工作,特别是如果你的lambda很复杂,而且容易出错);

  2. 按照我最初的建议编写一个接口并修改lambdas,然后在运行时使用ExpressionVisitor将lambda的参数表达式替换为引用类类型的新参数表达式,并替换引用原始参数表达式,引用了新参数表达式。

  3. 我非常喜欢2,因为你可以继续在代码中编写lambdas;在运行时,您只是在表达式树中进行相对简单的替换。对于你现在拥有的任何lambda都是一个单独的解决方案,并且将来会提出。