首页 > 解决方案 > 在 CRM Online 插件中序列化“实体”类型的对象

问题描述

我要解决的问题是,我需要将实体的 Target/Pre/Post-Image 序列化为 json 字符串。我知道我们不能在插件中包含 nuget 库,因为 ILmerge 不是一个选项。这是我尝试过的:

var jStr = Serialize((Entity)excutionContext.InputParameters["Target"]);

public static string Serialize<TEntity>(TEntity dataObject)
{
    using (var stream = new MemoryStream())
    {
         var serializer = new DataContractJsonSerializer(typeof(TEntity));
         serializer.WriteObject(stream, dataObject);
         return Encoding.UTF8.GetString(stream.ToArray());
    }
}

但是我遇到了以下异常,无法弄清楚我要做什么来解决这个问题:

System.Security.SecurityException: '数据合同类型'System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib , Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' 不能在部分信任中序列化,因为成员 'key' 不是公开的。'

标签: c#serializationdynamics-crmdynamics-crm-online

解决方案


据我所知,我们无法在 CRM 中序列化实体。

充其量你可以创建一个数据合同类,它的 get set 成员,然后序列化实体。但这又将是大量的手工工作。

查看以下 2 个线程,其中提供了有关您的问题的更多信息。

线程 1

线程 2


推荐阅读