相关疑难解决方法(0)

深度克隆对象

我想做的事情如下:

MyObject myObj = GetMyObj(); // Create and fill a new object
MyObject newObj = myObj.Clone();
Run Code Online (Sandbox Code Playgroud)

然后更改未在原始对象中反映的新对象.

我不经常需要这个功能,所以当有必要的时候,我已经使用了创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况.

如何克隆或深度复制对象,以便可以修改克隆对象而不会在原始对象中反映任何更改?

.net c# clone

2135
推荐指数
34
解决办法
77万
查看次数

如何在C#中克隆通用列表?

我在C#中有一个通用的对象列表,并希望克隆列表.列表中的项目是可复制的,但似乎没有选项可做list.Clone().

有一个简单的方法吗?

c# generics clone list

545
推荐指数
13
解决办法
57万
查看次数

JSON.Net:强制序列化所有私有字段和子类中的所有字段

我有一个有几个不同类的类,我将这些类中的信息发送给客户,但我不想将它们全部发送出去,所以有些是私有的,有些是[JsonObject(MemberSerialization.OptIn)]旗帜等.

但是,现在我想在需要关闭服务器时每隔12个小时(我不想使用数据库)对所有这些对象进行备份,所以我想做的(如果可能的话)是强制JSON .Net Serializer转换对象和属于该对象的所有对象.

例如:

class Foo
{
  public int Number;
  private string name;
  private PrivateObject po = new PrivateObject();

  public string ToJSON()
  { /* Serialize my public field, my property and the object PrivateObject */ }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了这段代码(即使它已经过时了)但它没有序列化与我的对象相关的对象:

Newtonsoft.Json.JsonSerializerSettings jss = new Newtonsoft.Json.JsonSerializerSettings();

Newtonsoft.Json.Serialization.DefaultContractResolver dcr = new Newtonsoft.Json.Serialization.DefaultContractResolver();
dcr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic;
jss.ContractResolver = dcr;

return Newtonsoft.Json.JsonConvert.SerializeObject(this, jss);
Run Code Online (Sandbox Code Playgroud)

c# json.net

46
推荐指数
2
解决办法
3万
查看次数

如何深度复制类而不将其标记为Serializable

鉴于以下课程:

class A
{
    public List<B> ListB;

    // etc...
}
Run Code Online (Sandbox Code Playgroud)

哪个B是可以继承/包含其他类的另一个类.


鉴于这种情况:

  1. A 是一个大类,包含许多引用类型
  2. 我无法标记B,[Serializable]因为我无法访问源代码B

以下执行深度复制的方法不起作用:

  1. 我不能使用ICloneableMemberwiseClone作为类A包含许多引用类型
  2. 我不能写一个拷贝构造函数A,因为类很大并且不断被添加到,并且包含B无法深度复制的类(如)
  3. 我无法使用序列化,因为我无法标记包含的类(例如B,没有可用的源代码)[Serializable]

我怎样才能深造课A

c# deep-copy cloning

17
推荐指数
1
解决办法
2万
查看次数

深度复制.NET类实例而不进行序列化

我正在使用来自第三方DLL的实例类,我需要在特定实例上进行深层复制.该类未标记为Serializable,因此我无法使用此建议的方法BinaryFormatter.

如何在不使用序列化的情况下获取此对象的深层副本?

.net instance deep-copy

8
推荐指数
1
解决办法
7046
查看次数

标签 统计

c# ×4

.net ×2

clone ×2

deep-copy ×2

cloning ×1

generics ×1

instance ×1

json.net ×1

list ×1