Dynamics CRM 插件共享变量 - 对象或数组

Dynamics CRM Plugin Shared variables - Object or Array

我们有一个场景,我们需要计算多个费用组成部分并在插件的 Pre 和 Post 阶段之间共享。所以我们创建了这样的对象。

class FeeCalculation
    {
        public string TotalFee { get; set; }
        public string FilingFee { get; set; }
        public string LegalFee { get; set; }
        public string RecordFee { get; set; }
    }

到目前为止,我们使用的单一费用组件和共享变量运行良好。当尝试分配整个对象时 - 结果并不成功。

context.SharedVariables.Add("fees", fcObject);

有没有办法达到这个预期的效果?

插件基础结构必须能够 serialize/deserialize 您 SharedVariables 集合中的对象。它不了解 FeeCalculation class 等自定义类型,因此无法对其进行序列化。

使用原始类型、常见的 .NET 类型(例如 List 小数应该可以)或 CRM 类型(EntityMoney 等)。值得注意的是 SharedVariables 集合是一个键值对集合。那么,为什么不直接使用 "TotalFee"、"FilingFee" 等键向其中添加项目呢?

我试图分享一个 IEnumerable<Guid>,但是 collections 像 List 没有用。

当然你总是可以序列化为字符串,但你的插件代码真的不应该处理常见类型的序列化。

经过反复试验,我最终使用了数组,即 Guid[]