XmlSerializer重用具有不同命名空间的相同类

时间:2017-04-04 15:17:16

标签: c# .net rest wcf

我用wcf做了一个休息服务。现在我有以下问题我想重用具有不同namesapce的多个类。这就是我在课堂上使用XmlSeralizer的方法。

[Serializable]
[DebuggerStepThrough]
[XmlType(AnonymousType = true, Namespace = "http://www.eysnap.com/mPlayer")]
[XmlRoot(ElementName = "Customer", Namespace = "http://www.eysnap.com/mPlayer", IsNullable = false)]
public class Customer
{
    [XmlElement]
    public string UserName { get; set; }

     [XmlElement]
     public string Password { get; set; }
}

现在我尝试使用不同的命名空间重用该类。我发现这个解决方案有效,但有没有更好的方法来解决这个问题?

WebOperationContext.Current.OutgoingResponse.ContentType = "text/XML";
XmlSerializer serializer = new XmlSerializer(typeof(Customer), "myNamescpace");
var sw = new StringWriter();
serializer.Serialize(sw, new Customer("test", "test1"));
byte[] resultBytes = Encoding.UTF8.GetBytes(sw.ToString());

1 个答案:

答案 0 :(得分:1)

简短版本是“不,这是正确的”较长的版本是相同的,但警告说,存储和重新使用此序列化程序实例很重要:

  • 当您使用public static void setPica036FNArray(String pica036fnArray) { pica036FNArray += pica036fnArray; } 时,动态生成的程序集将在序列化程序实例之间进行缓存和重用
  • 但对于所有其他new XmlSerializer(Type)构造,它不是