2017-04-04 1 views
1

Ich machte einen Rest Service mit WCF. Jetzt habe ich das folgende Problem Ich möchte mehrere Klassen mit einem anderen Namen wiederverwenden. So habe ich den XmlSeralizer für die Klasse verwendet.XmlSerializer Wiederverwendung der gleichen Klasse mit verschiedenen Namespace

[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; } 
} 

Jetzt habe ich versucht, die Klasse mit einem anderen Namespace wiederzuverwenden. Ich fand heraus, dass diese Lösung funktionierte, aber gibt es einen besseren Weg, das Problem zu lösen?

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()); 

Antwort

1

Die kurze Version ist „nein, das ist ungefähr richtig“ Die längere Version ist die gleiche, aber mit der Warnung, dass es wichtig ist, dass Sie speichern und wiederverwenden dieses Serializer Beispiel:

  • wenn Sie new XmlSerializer(Type) verwenden, wird die dynamisch generierte Assembly Cache gespeichert und zwischen Serializer Instanzen
  • aber für alle anderen new XmlSerializer(...) Konstrukte wieder verwendet, ist es nicht
ist
Verwandte Themen