更深入复制AutoGenerated WebService类的清洁方法

时间:2009-06-23 17:54:05

标签: c# web-services serialization clone

我目前正在使用序列化来制作一些自动生成的webservice类的深层副本。这是一个更干净的方法吗?这些类是自动生成的,所以我不想触摸它们。更多细节:

我当前的代码(工作正常)是这样的:

using (Stream stream = new MemoryStream()) //Copy IR
{
    IFormatter IF = new BinaryFormatter();
    IF.Serialize(stream, IR);
    stream.Seek(0, SeekOrigin.Begin);
    IR2 = (ObjectType)IF.Deserialize(stream);
}

代码用于复制自动生成的类。当我向soap请求添加web引用时,Visual Studio 2005会自动生成此类等。这些类看起来像这样:

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace=/*"[WebServiceNameSpace]"*/)]
public partial class ObjectType {

    private string AField;        
    private string BField;
    //...
    public string A {
        get {
            return this.AField;
        }
        set {
            this.AField = value;
        }
    }

    /// <remarks/>
    public string B {
        get {
            return this.BField;
        }
        set {
            this.BField = value;
        }
    }
    //...
}

1 个答案:

答案 0 :(得分:2)

深度克隆是痛苦的。如果类支持序列化,那么这是最好的(=最可靠的)选项。其他任何工作都是很多

实际上,由于类型支持xml序列化,因此这里的自然选择是XmlSerializer

你想解决问题吗?性能