gpt4 book ai didi

c# - 使用 Linq Select 创建新的继承对象

转载 作者:行者123 更新时间:2023-11-30 16:05:18 24 4
gpt4 key购买 nike

我有 2 个类(class),UserExtendedUser . ExtendedUser继承自 User并且只添加 2 int字段 - 没什么特别的。

我有一个 User 的列表对象 - List<User>并想查看列表并创建 ExtendedUser 的列表对象,我只想填充缺少的 int字段。

我考虑过使用 Select Linq 创建新对象的方法,但它不会复制 UserExtendedUser - 所以我需要重新创建这些对象,这对我来说没有意义。

编辑:

User是一个实体,其中 ExtendedUser是从该实体继承的自定义类(但不是实体本身)。

似乎这里最简单的解决方案是组合,尽管从概念上讲 - 继承会更好。

这里有什么聪明的解决方案吗? :)

谢谢!

最佳答案

... of Linq to create the new objects, but it won't copy the User to ExtendedUser - so I'll need to recreate those objects, which doesn't make sense for me.

这不是Linq的缺点。

强类型 OOP 中的一般原则是您不能简单地将基类对象转换为派生对象。这种转换总是涉及复制成员,这会引发身份问题(哪个克隆是真实的?)。

换句话说,当一个对象应该属于 B 类时,它永远不应该作为 A 类开始,即使 B 派生自 A。因此,请重新审视您的设计和整体解决方案。

当您仍然认为需要这个时,您所遇到的情况就是将实体转换为 DTO,反之亦然。你可以使用像 AutoMapper 这样的常用工具。

关于c# - 使用 Linq Select 创建新的继承对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com