1
[DataContract()] 
    public class Person 
    { 
     [DataMember()] 
     private string _fname; 
     [DataMember()] 
     private string _lname; 
     [DataMember()] 
     public string _nickName; 

     public Person(string f, string l) 
     { 
      _fname = f; 
      _lname = l; 

      _nickName = _fname + _lname.Substring(0, 1); 
     } 

     public string FullName() 
     { 
      return _fname + " " + _lname; 
     } 
    } 

serialize하는 자체 메서드를 작성하면/deSerialize 모든 멤버 (개인/공용)를 serialize 할 수 있습니다. howerver .net webservice에서 이것을 사용할 때 public 멤버 만 serialize하고 private는 사용하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 검색된 전체 SO는 솔루션을 찾을 수 없습니다.xmlSerialization에서 개인 멤버를 serialize하는 방법

+0

['[serializable]'] (http://stackoverflow.com/a/5877839/1324033)을 선언 해 보았습니까? – Sayse

+0

예 @Sayse, 사실 처음에 [serializable]을 사용하고 있었는데 똑같은 문제가있었습니다. 그럼 내가 [이] (http://stackoverflow.com/questions/4314982/c-sharp-serialize-private-class-member) 질문,하지만 행운을 빕니다. – ahsant

+0

사용되는 시리얼 라이저 란 무엇입니까? XmlSerializer 또는 DataContractSerializer? 웹 서비스가 전자를 사용하고있는 것 같아요? 이 경우 후자로 전환 할 수 있습니까? Latter는이 속성을 모두 사용하지 않아도 쉽게이 문제를 처리합니다. – nawfal

답변

0

어쩌면 웹 서비스 프록시가 DataContractSerializer 대신 XmlSerializer를 사용하는 것처럼 들릴 수 있습니다. 이는 이전 asmx wbservices 또는 .net 웹 서비스와 통신하는 경우가 될 수 있습니다. 비공개 필드를 공개 속성으로 변경하고 해당 필드가 작동하는지 확인하십시오.

[DataMember()] 
public string _fname { get; set; } 
[DataMember()] 
public string _lname { get; set; } 
[DataMember()] 
public string _nickName { get; set; } 

작동하는 경우 XmlSerializer를 사용하고 있습니다. 비공개 필드를 직렬화 할 수는 없지만 DatacontractSerializer는이를 수행 할 수 있습니다.

+0

공용 속성으로 변경하면 작동합니다. 하지만 몇 가지 한계로 인해 속성을 사용할 수 없습니다. 어떻게 VS XML DataContractSerializer 대신 사용하도록 요청할 수 있습니다. BTW 나는 VS2010을 사용하고 있습니다. 내 webservice 프로젝트의 .net 프레임 워크는 3.5입니다. – ahsant

+0

webservice는 wcf webservice입니까? 또는 .asmx 종류의 ASP.NET? –

+0

ASP.net .asmx kind – ahsant

관련 문제