.net 手动序列化对象如何使用wcf显示名称属性?

.net 手动序列化对象如何使用wcf显示名称属性?,.net,xml,wcf,.net,Xml,Wcf,我的WCF Web服务必须返回xml文件以供下载,为此,我需要序列化一个类中的对象列表。下面是该类的定义: [DataContract] public class ReportItemDriversPerAffiliate : IReportItemDriversPerAffiliate { [DataMember(Name = "affiliate_name")] public string AffiliateName { get; set; }

我的WCF Web服务必须返回xml文件以供下载,为此,我需要序列化一个类中的对象列表。下面是该类的定义:

[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; }
    }
对于此功能,我使用以下代码:

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);
var totalDriversPerAffiliate=_glManager.GetTotalDriversPerAffiliate();
XmlSerializer ser=新的XmlSerializer(totalDriversPerAffiliate.GetType());
MemoryStream ms=新的MemoryStream();
序列序列化(ms,totalDriversPerAffiliate);
ms.Position=0;
StreamReader r=新StreamReader(毫秒);
字符串res=r.ReadToEnd();
var context=System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse;
Add(“内容处置”、“附件;文件名=TotalDriversPerAffiliate.xml”);
context.ContentType=“应用程序/txt”;
byte[]resultBytes=Encoding.UTF8.GetBytes(res);
返回新的MemoryStream(结果字节);

但是,在响应文件中,我有xml中的字段,这些字段具有类属性的值,而不是WCF显示名称属性的值(具有“AffiliateName”,想要“affiliate_name”),我如何手动序列化该类,并在xml中具有类的显示名称属性等字段?而且,我不想向这个类添加额外的xml属性,也不想在web服务中创建单独的方法,将此数据作为xml响应返回。

XmlSerializer忽略DataMember属性。尝试NetDataContractSerializer