Я пытаюсь выполнить сериализацию контекста исполнения плагина MS CRM 2011 для JSON для его анализа позже (мне нужно найти ошибку, и я предпочел бы, читаемая форма контекстного дампа).Сериализация контекста выполнения плагина MS CRM 2011 для JSON
Но все мои попытки приводит к ошибкам сериализации, как следующее:
Newtonsoft.Json.JsonSerializationException: Error getting value from 'ServiceProvider' on 'Plugin+LocalPluginContext
плагин был сгенерирован Visual Studio надстройки. Код был помещен внутри базового класса Plugin
, как это:
internal void Trace(string message)
{
if (string.IsNullOrWhiteSpace(message) || this.TracingService == null)
{
return;
}
if (this.PluginExecutionContext == null)
{
this.TracingService.Trace(message);
}
else
{
this.TracingService.Trace(
"{0}, Correlation Id: {1}, Initiating User: {2}",
message,
this.PluginExecutionContext.CorrelationId,
this.PluginExecutionContext.InitiatingUserId);
var jss = new JsonSerializerSettings();
var dcr = new DefaultContractResolver();
dcr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic;
jss.ContractResolver = dcr;
this.TracingService.Trace("Local Context Dump: {0}", JsonConvert.SerializeObject(this, jss));
}
}
Я считаю, что этот вопрос является общий подход. LocalContext
- очень сложный объект. JSON.NET не может сериализовать некоторые типы. Но я не могу скрыть это ограничение.
Не могли бы вы помочь мне исправить этот подход?
Да, я, но я хочу, чтобы придумать более удобный модульного тестирования подход, лучше, чем https://crm2011plugintest.codeplex.com/один. Если мне удастся, я поделюсь своими результатами по Киевскому CRM UG. – shytikov