2012-10-23 4 views
0

내 WCF webservice에서 다운로드 할 XML 파일을 반환해야합니다. 해당 기능에 대해 하나의 클래스에서 개체 목록을 serialize해야합니다. 여기에 클래스 정의 :개체를 수동으로 serialize하는 방법은 wcf display name 특성을 사용합니까?

[DataContract] 
    public class ReportItemDriversPerAffiliate : IReportItemDriversPerAffiliate 
    { 
     [DataMember(Name = "affiliate_name")] 
     public string AffiliateName { get; set; } 

     [DataMember(Name = "affiliate_city")] 
     public string AffiliateCity { get; set; } 

     [DataMember(Name = "affiliate_state")] 
     public string AffiliateState { get; set; } 

     [DataMember(Name = "drivers_count")] 
     public int DriversCount { get; set; } 
    } 

그리고이 기능을 나는이 코드를 사용 : 나는 클래스 속성, WCF 디스플레이의 값이 아닌 값이 XML 필드를 응답 파일

var totalDriversPerAffiliate = _glManager.GetTotalDriversPerAffiliate<ReportItemDriversPerAffiliate>(); 

      XmlSerializer ser = new XmlSerializer(totalDriversPerAffiliate.GetType()); 

      MemoryStream ms = new MemoryStream(); 
      ser.Serialize(ms, totalDriversPerAffiliate); 
      ms.Position = 0; 

      StreamReader r = new StreamReader(ms); 
      string res = r.ReadToEnd(); 

      var context = System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse; 
      context.Headers.Add("Content-Disposition", "attachment; filename=TotalDriversPerAffiliate.xml"); 
      context.ContentType = "application/txt"; 

      byte[] resultBytes = Encoding.UTF8.GetBytes(res); 
      return new MemoryStream(resultBytes); 

하지만를, 이름 속성 ("AffiliateName"을 가지고, "affiliate_name"을 원한다),이 클래스를 수동으로 직렬화하고 클래스의 표시 이름 속성과 같은 xml 필드를 가질 수있는 방법은 무엇입니까? 그리고이 클래스에 추가 xml 특성을 추가하는 것을 원하지 않으며 xml 응답으로이 데이터를 반환하는 웹 서비스에서 별도의 메서드를 만드는 것을 원하지 않습니다.

답변

0

XmlSerializer는 DataMember 특성을 무시합니다. NetDataContractSerializer를 사용해보십시오.

관련 문제