2017-04-04 67 views
1

我用wcf做了一个休息服务。现在我遇到以下问题,我想用不同的namesapce重用多个类。这是我为该类使用XmlSeralizer的方式。XmlSerializer重复使用具有不同命名空间的相同类

[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

简短的版本是“不,那是关于正确”的更长的版本是一样的,但警告说您存储和再利用这种串行情况下是很重要的:

  • 当您使用new XmlSerializer(Type),动态生成的程序集缓存和串行实例之间重新使用
  • 但对于所有其他new XmlSerializer(...)结构,但它不是
相关问题