オブジェクトを xml にシリアル化する関数があります。
private string ConvertToXml(object obData)
{
var x = new System.Xml.Serialization.XmlSerializer(obData.GetType());
var myStr = string.Empty;
try
{
using (var ms = new MemoryStream())
{
x.Serialize(ms, obData);
ms.Position = 0;
var sr = new StreamReader(ms);
myStr = sr.ReadToEnd();
_log.DebugFormat("Converted XML output of record:: {0}", myStr);
}
}
catch (Exception e)
{
_log.WarnFormat("Object Conversion to XML Document Failed ..{0} and the obData is: {1}", e.Message,obData) ;
}
return myStr;
}
私が送信したどのクラスインスタンスでも問題なく動作します。しかし、JObject がこの関数に入ると、次のエラーが発生します。
System.InvalidOperationException: You must implement a default accessor on Newtonsoft.Json.Linq.JObject because it inherits from ICollection.
at System.Xml.Serialization.TypeScope.GetDefaultIndexer(Type type, String memberInfo)
at System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, MemberInfo memberInfo, Boolean directReference)
at System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError)
at System.Xml.Serialization.ModelScope.GetTypeModel(Type type, Boolean directReference)
at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type)
at CTP.Transformer.XSLT.XSLTTransformer.ConvertToXml(Object obData)
JObject シリアライザーを使用できますが、この関数は汎用的ではなくなります。
助言がありますか?