public void WfTransitionJsonToCreateTransitionParams() { WfForwardTransitionDescriptor transition1 = new WfForwardTransitionDescriptor("T1"); transition1.Name = "Transition1"; transition1.Condition.Expression = "Amount > 4000"; transition1.Variables.Add(new WfVariableDescriptor("V1", "Shen Zheng")); transition1.Variables.Add(new WfVariableDescriptor("Level", "10", DataType.Int)); WfForwardTransitionDescriptor transition2 = new WfForwardTransitionDescriptor("T2"); transition2.Name = "Transition2"; JSONSerializerExecute.RegisterConverter(typeof(WfConditionDescriptorConverter)); JSONSerializerExecute.DoContextConvertersAction(() => { string json = JSONSerializerExecute.Serialize(new WfForwardTransitionDescriptor[] { transition1, transition2 }); Console.WriteLine(json); WfCreateTransitionParamCollection transitionParams = new WfCreateTransitionParamCollection(json); Assert.AreEqual(2, transitionParams.Count); Assert.AreEqual(transition1.Key, transitionParams[0].Parameters["Key"]); Assert.AreEqual(transition1.Name, transitionParams[0].Parameters["Name"]); Assert.AreEqual(transition1.Condition.Expression, transitionParams[0].Parameters["Condition"]); Assert.AreEqual(transition2.Key, transitionParams[1].Parameters["Key"]); Assert.AreEqual(transition2.Name, transitionParams[1].Parameters["Name"]); Assert.IsFalse(transitionParams[1].Parameters.ContainsKey("Condition")); Assert.AreEqual(transition1.Variables.Count, ((Dictionary <string, object>[])transitionParams[0].Parameters["Variables"]).Length); }, typeof(EasyWfForwardTransitionDescriptorConverter), typeof(EasyWfVariableDescriptorConverter) ); }