2009-06-23 3 views
1

일부 자동 생성 된 webservice 클래스의 전체 복사본을 만들기 위해 현재 직렬화를 사용하고 있습니다. 이것을하는 더 청결한 방법인가? 클래스는 자동 생성되므로 터치하지 않으려 고합니다. 더 많은 세부 사항 : 코드는 자동으로 생성 된 클래스를 복사하는 데 사용되는자동 생성 된 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); 
} 

:

나의 현재 코드는 (잘 작동하는)이있다. 비누 요청에 웹 참조를 추가하면 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; 
     } 
    } 
    //... 
} 

답변

2

딥 복제는 고통 스럽습니다. 클래스가 직렬화를 지원하면 가장 좋은 (= 가장 신뢰할 수있는) 옵션입니다. 그 밖의 것은 로트입니다.

사실, 유형이 xml 직렬화를 지원하므로 여기 자연스러운 선택은 XmlSerializer입니다.

해결하려는 문제가 있습니까? 공연?

+0

아니요, 문제를 해결하려고합니다. 단지 더 깨끗한 방법이 있는지 확인하려고합니다. 나는 특히 거기에 없다고 놀랍지는 않지만, 물어볼 것이라고 생각했다. (필자는 직렬화 코드를 별도의 제네릭 함수 또는 다른 것으로 옮기는 것은 쉽지만 아무것도 정리하지는 않는다는 것을 알고 있습니다.) – Brian

관련 문제