2017-04-04 7 views
1

私はwcfで休憩サービスを行いました。今私は、別のネームスペースで複数のクラスを再利用したいという次の問題があります。これは、クラスの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(...)構築物について、それが
ではありません
関連する問題