gpt4 book ai didi

c# - 单例类是否可以进行深拷贝

转载 作者:行者123 更新时间:2023-12-02 04:44:20 33 4
gpt4 key购买 nike

引用与使用扩展方法为类创建深度复制方法相关的 Stack overflow 讨论,它不需要 [Serializable] 属性:

How do you do a deep copy of an object in .NET (C# specifically)?

我拥有的类是一个单例类,它是一个旧的实现:

  • 我可以创建相同的深拷贝吗?根据定义我理解这是不可能的,但我想了解在这种典型情况下是否有可能的解决方法。我知道我的另一个选择是将类更改为非单例,但在我们当前的设计和使用中,这将需要大量工作并可能导致许多问题。

  • 当前类还引用了多个其他自定义类,因此当我进行深层复制时,尤其是 Alex Burtsev 在以下代码中的方式:

https://raw.github.com/Burtsev-Alexey/net-object-deep-copy/master/ObjectExtensions.cs

我是否需要为所有被引用的类都提供扩展方法,我假设是这种情况。

最佳答案

正如您提到的,根据定义,单例类不能有多个实例。但是,没有用于单例的 C# 构造,因此单例类的实现已经是一种解决方法。

即使您的类只有私有(private)构造函数,您也可以使用 BinaryFormatter(感谢 Gusdor)或使用反射来创建深拷贝] 1 .

在我看来,一个类只是一个单例类,因为你遵循它的行为,所以当你复制它时,它就不再是单例类了。

关于c# - 单例类是否可以进行深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114978/

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