Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dynamics CRM插件共享变量-对象或数组_C#_Dynamics Crm_Crm_Microsoft Dynamics_Dynamics Crm 2015 - Fatal编程技术网

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

C# Dynamics CRM插件共享变量-对象或数组,c#,dynamics-crm,crm,microsoft-dynamics,dynamics-crm-2015,C#,Dynamics Crm,Crm,Microsoft Dynamics,Dynamics Crm 2015,我们有一个场景,在这个场景中,我们需要计算多个费用组件,并在插件的前后阶段之间进行共享。所以我们创建了这样的对象 class FeeCalculation { public string TotalFee { get; set; } public string FilingFee { get; set; } public string LegalFee { get; set; } public string RecordFe

我们有一个场景,在这个场景中,我们需要计算多个费用组件,并在插件的前后阶段之间进行共享。所以我们创建了这样的对象

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);

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

插件基础结构必须能够序列化/反序列化您的
共享变量
集合中的对象。它不了解自定义类型,如
feecoculation
类,因此无法序列化它


使用基本类型、常见的.NET类型(例如小数的
列表
)或CRM类型(
实体
货币
等)。值得注意的是,
SharedVariables
集合是一个键值对集合。那么,为什么不直接用“TotalFee”、“FilingFee”等键向其添加项目呢?

我正试图共享一个
IEnumerable
,但像
List
这样的集合不起作用

当然,您总是可以序列化为字符串,但您的插件代码实际上不必处理常见类型的序列化


经过一些尝试和错误,我最终使用了数组,也就是说,
Guid[]

uhm,很长一段时间我不使用共享变量,但是如果您将对象序列化为XML,作为字符串传递,并进行反序列化,它应该可以正常工作,我认为进行序列化/反序列化也是一样的。你确认了,我试试看。谢谢。是的,我同意,但不是所有的费用都适用于所有时间。我会尽力让你知道。。谢谢。@ArunVinoth作为一种可能的替代方法,您可以手动序列化/反序列化并将序列化的字符串作为共享变量传递。@AndriiButenko-非常好,谢谢您,这是一个更好的答案。使用这些扩展方法