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-非常好,谢谢您,这是一个更好的答案。使用这些扩展方法