0
クラスメンバの1つがインタフェースなので、XMLシリアライザブルではないベンダのDLLのクラスを使用しています。直列化不可のベンダクラスをシリアライズ可能にする
しかし、クラスのインスタンスをシリアル化する必要があります。
XmlSerializerにインターフェイスを無視し、他のすべてをシリアル化するように指示するにはどうすればよいですか?
クラスメンバの1つがインタフェースなので、XMLシリアライザブルではないベンダのDLLのクラスを使用しています。直列化不可のベンダクラスをシリアライズ可能にする
しかし、クラスのインスタンスをシリアル化する必要があります。
XmlSerializerにインターフェイスを無視し、他のすべてをシリアル化するように指示するにはどうすればよいですか?
あなたは2つのことを行うことができます。
1)は、あなたがそれをシリアル化、ベンダーのクラスを移入、あなたが望むすべてのものを持つクラスを作成します。
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;
}
私はそれが役に立ちそうです。
私は[Json.Net](https://json.codeplex.com/)を試してみる –
@ LBのコメントを少し拡大すると、Json.NETは[JSONからXMLに変換できます](http:// www.newtonsoft.com/json/help/html/ConvertingJSONandXML.htm)ので、jsonにシリアル化してXMLに変換することができます。 – dbc
それ以外の場合は、[元のクラスを変更せずにシリアル化中の一部のプロパティを除外する](http://stackoverflow.com/questions/9377414)を参照してください。しかし、[StreamReaderとXmlSerializerを使用してメモリリーク](https://stackoverflow.com/questions/23897145)をメモしてください。シリアライザは一度構築してからキャッシュしてください。 – dbc