|
|
1
1
在运行构造函数之前,“Invoice”对象不存在。在为构造函数创建参数时,无法引用它。这与LINQ无关。 就我个人而言,我想我会完全删除与家长的链接。你什么时候真正需要它?
如果一条线可以在没有父线的情况下存在,则可以使用
如果您不希望行没有父对象,那么发票构造函数必须采用一系列行工厂函数,而不是行对象。
重复一下,我更愿意从DTO中完全删除父属性。 |
|
|
2
0
我很惊讶Linq不支持这一点,因为对象中的双向导航对于许多图形类型和内存查询都是必不可少的。如果你看
因此,假设双向性是一个要求,并且在特定的设计中有很多原因,那么问题仍然存在。 我希望我错过了什么,一些聪明的人会过来说,嘿,就这么做吧,Linq有一个func东西,它指向(这个)正在创建的对象。这不会让我感到惊讶。
最后我能想到的最好的方法与@gnud上面所描述的非常相似,但有一点扭曲,通过添加一个
我做了以下更改
我认为,最后一点对于团队来说确实是一个风格问题,以决定他们想要在不变性方面走多远。在我的项目中,这并不是什么具体的东西。在我的用例中,我实际上要处理数十亿个图形节点,发票和项目示例是我所能想到的演示Linq问题的最小代码。在我的用例中,需要克隆所有对象来设置它们的父对象将非常昂贵,而且不一定会导致更安全的代码。 而不是AsReadOnly我只是使用数组,因为代码只供我使用,我在项目中使用的约定是数组表示只读集合,数组使代码超级干净,更容易扫描,并能立即识别签名中的只读属性等。 .
更新时间:5月16日上午10点 如果你想完全进入不可变类兔子洞,那么使用数组是一个很大的禁忌。请参阅我在底部的最后一条评论。这个问题的真正重点不是写不可变的类,而是如何创建一个嵌套对象,在使用linq时指向它的父对象,而这些类恰好是不可变的,也就是说,您想在哪里使用一个linq投影,一次完成漂亮而干净的操作。:) 谢谢大家的反馈和快速回答,你们真是棒极了! |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |