2

可能重复:
使用 DataContractSerializer 序列化没有命名空间的对象

当我序列化这个类的对象时:

[DataContract]
internal class Settings
{
    [DataMember]
    public List<string> AllowedEmails { get; set; }
}

我有这个 XML 作为输出:

<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns="http://schemas.datacontract.org/2004/07/Commands.Settings">
    <AllowedEmails xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d2p1:string>asdsada</d2p1:string>
        <d2p1:string>asdsada</d2p1:string>
    </AllowedEmails>
</Settings>

有没有办法摆脱命名空间xmlns="http://schemas.datacontract.org/2004/07/Commands.Settings"xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"

我知道我可以通过这样做来删除 d2p1 命名空间:

public Settings()
{
    [DataMember]
    public AllowedEmails AllowedEmails { get; set; }
}


[CollectionDataContract]
public class AllowedEmails : List<string>
{
    public AllowedEmails()
    {
    }
}

但是可能有更优雅的解决方案吗?

4

0 回答 0