如何在 c# 中基于特定的源对象创建各种副本?

How to create various copies based on a specific source object in c#?

提问人:Ipsider 提问时间:7/19/2018 更新时间:7/19/2018 访问量:25

问:

我有一个 MyObject 类型的复杂 objectA。我想基于特定对象创建此 MyObject 的多个变体 A。

public class MyObject()
{
    int myAttr1;
    string myAttr2;
    MyChildObject1 myChildObject1;
    MyChildObject2 myChildObject2;
    ...
}

public List<MyObject> createVariations(MyObject myObject)
{
    List<MyObject> myObjectList = new List<MyObject>();
    MyObject myFirstVariation = myObject;
    myFirstVariation.myAttr1 = myObject.myAttr1 + 5;

    myObjectList.Add(myFirstVariation);

    // TODO: Do different specific variations of the same source object!
    ...

    return myObjectList;
}

我知道这是行不通的,因为我只是创建了对 myObject 的多个引用,并且我正在更改其参数,因此列表中会有很多对同一对象的引用。

如何获取具有不同配置的对象列表。我真的必须为这些对象创建复制构造函数吗?先谢谢你。

C# 参考 构造函数 deep-copy

评论

1赞 CodeCaster 7/19/2018
“我真的必须为这些对象创建一个复制构造函数吗?”- 是的,或者克隆它们:stackoverflow.com/questions/129389/......
1赞 Paul Suart 7/19/2018
当然,有几种方法可以做到这一点。一种方法是序列化(比如使用 JSON.net),然后反序列化回一个新对象。性能可能不是很好,但如果这仅适用于单元测试,则可能是可以接受的。
0赞 Ipsider 7/23/2018
感谢您的输入

答: 暂无答案