从DataContract中删除命名空间不会';不起作用

本文关键字:不起作用 DataContract 删除 命名空间 | 更新日期: 2023-09-27 18:22:19

我必须使用两个简单的序列化/去序列化方法,

映射:

[System.Runtime.Serialization.DataContract(Namespace = "", Name = "PARAMS")]
    public sealed class CourseListRequest {
        [DataMember(Name = "STUDENTID")]
        public int StudentId { get; set; }
        [DataMember(Name = "YEAR")]
        public string Year { get; set; }
        [DataMember(Name = "REQUESTTYPE")]
        public int RequestType { get; set; }
    }
    public static string Serialize<T>(this T value) {
        if (value == null) throw new ArgumentNullException("value");
        try {
            var dcs = new DataContractSerializer(typeof (T));
            string xml;
            using (var ms = new MemoryStream()) {
                dcs.WriteObject(ms, value);
                xml = Encoding.UTF8.GetString(ms.ToArray());
            }
            return xml;
        }
        catch (Exception e) {
            throw;
        }
    }
    public static T Deserialize<T>(this string xml) where T : class {
        if (string.IsNullOrEmpty(xml)) {
            return default(T);
        }
        try {
            var dcs = new DataContractSerializer(typeof (T));
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml))) {
                ms.Position = 0;
                return dcs.ReadObject(ms) as T;
            }
        }
        catch (Exception e) {
            throw;
        }
    }
result:
<PARAMS xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><REQUESTTYPE>36</REQUESTTYPE><STUDENTID>0</STUDENTID><YEAR>תשע</YEAR></PARAMS>

如何删除xmlns:i="http://www.w3.org/2001/XMLSchema-instance"??关于的序列化

从DataContract中删除命名空间不会';不起作用

切换到使用XmlSerializer

System.Xml.Serialization.XmlSerializer

这将生成没有名称空间的纯XML