2016-09-12 3 views
0

クラスメンバの1つがインタフェースなので、XMLシリアライザブルではないベンダのDLLのクラスを使用しています。直列化不可のベンダクラスをシリアライズ可能にする

しかし、クラスのインスタンスをシリアル化する必要があります。

XmlSerializerにインターフェイスを無視し、他のすべてをシリアル化するように指示するにはどうすればよいですか?

+1

私は[Json.Net](https://json.codeplex.com/)を試してみる –

+0

@ LBのコメントを少し拡大すると、Json.NETは[JSONからXMLに変換できます](http:// www.newtonsoft.com/json/help/html/ConvertingJSONandXML.htm)ので、jsonにシリアル化してXMLに変換することができます。 – dbc

+1

それ以外の場合は、[元のクラスを変更せずにシリアル化中の一部のプロパティを除外する](http://stackoverflow.com/questions/9377414)を参照してください。しかし、[StreamReaderとXmlSerializerを使用してメモリリーク](https://stackoverflow.com/questions/23897145)をメモしてください。シリアライザは一度構築してからキャッシュしてください。 – dbc

答えて

0

あなたは2つのことを行うことができます。

1)は、あなたがそれをシリアル化、ベンダーのクラスを移入、あなたが望むすべてのものを持つクラスを作成します。

チェックadapter design pattern

2)使用Json.Net。メタデータを持つIPagedListをシリアル化する必要があると、これを行いました:

public static string SerializePagedList(IPagedList<T> pagedList) 
    { 
     string result = JsonConvert.SerializeObject(
      // new anonymous class with everything I wanted 
      new 
      { 
       Items = pagedList, 
       MetaData = pagedList.GetMetaData() 
      }, 
      new JsonSerializerSettings 
      { 
       NullValueHandling = NullValueHandling.Ignore, 
       ReferenceLoopHandling = ReferenceLoopHandling.Ignore 
      }); 
     return result; 
    } 

私はそれが役に立ちそうです。

関連する問題