我想做的事情如下:
MyObject myObj = GetMyObj(); // Create and fill a new object
MyObject newObj = myObj.Clone();
Run Code Online (Sandbox Code Playgroud)
然后更改未在原始对象中反映的新对象.
我不经常需要这个功能,所以当有必要的时候,我已经使用了创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况.
如何克隆或深度复制对象,以便可以修改克隆对象而不会在原始对象中反映任何更改?
我有一个可序列化的类,我的类中的一个属性在Guidgetter中生成一个.该属性不实现setter,并在序列化期间忽略.为什么这样,我总是必须实现一个setter才能序列化我的属性.
[Serializable]
public class Example
{
[XmlAttribute("id")]
public string Id
{
get
{
return Guid.NewGuid().ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试实现一个空的setter并正确序列化.
[Serializable]
public class Example
{
[XmlAttribute("id")]
public string Id
{
get
{
return Guid.NewGuid().ToString();
}
set {}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
你能指出我应该如何定义值永远不会改变的属性或者内部生成值的属性?