2017-04-04 68 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(...)結構,但它不是
相關問題