private Rule DeserializeSwitchCase(EventSlot slot, XElement element) { var paramName = element.Attribute("parameter").Value; var param = ParameterProviders.GetParameter(slot.EventType, paramName); if (param == null) { return(null); } var rule = new SwitchCaseRule(param); // Cases foreach (var caseElement in element.Elements("case")) { var value = Convert.ChangeType(caseElement.Attribute("value").Value, param.ValueType); var caseRules = new List <Rule>(); foreach (var caseRuleElement in caseElement.Elements()) { var caseRule = DeserializeRule(slot, caseRuleElement); if (caseRule != null) { caseRules.Add(caseRule); } } rule.Cases.Add(value, caseRules); } // Default var defaultElement = element.Element("default"); if (defaultElement != null) { foreach (var defaultRuleElement in defaultElement.Elements()) { var defaultRule = DeserializeRule(slot, defaultRuleElement); if (defaultRule != null) { rule.Default.Add(defaultRule); } } } return(rule); }
public override Rule ToRule(EventSlot slot) { var param = RuleParameterProviders.Providers.GetParameter(slot.EventType, Parameter); var rule = new SwitchCaseRule(param); foreach (var caze in Cases) { var value = Convert.ChangeType(caze.Value, param.ValueType); rule.Cases.Add(value, caze.Rules.Select(r => r.ToRule(slot)).ToList()); } foreach (var defaultRule in Default) { rule.Default.Add(defaultRule.ToRule(slot)); } return(rule); }
public static SwitchCaseRuleModel FromRule(SwitchCaseRule rule) { var model = new SwitchCaseRuleModel { Parameter = rule.Parameter.Name }; foreach (var caze in rule.Cases) { model.Cases.Add(new CaseModel { Value = caze.Key.ToString(), Rules = caze.Value.Select(r => RuleModelBase.FromRule(r)).ToList() }); } foreach (var defaultRule in rule.Default) { model.Default.Add(RuleModelBase.FromRule(defaultRule)); } return(model); }
private Rule DeserializeSwitchCase(EventSlot slot, XElement element) { var paramName = element.Attribute("parameter").Value; var param = ParameterProviders.GetParameter(slot.EventType, paramName); if (param == null) { return null; } var rule = new SwitchCaseRule(param); // Cases foreach (var caseElement in element.Elements("case")) { var value = Convert.ChangeType(caseElement.Attribute("value").Value, param.ValueType); var caseRules = new List<Rule>(); foreach (var caseRuleElement in caseElement.Elements()) { var caseRule = DeserializeRule(slot, caseRuleElement); if (caseRule != null) { caseRules.Add(caseRule); } } rule.Cases.Add(value, caseRules); } // Default var defaultElement = element.Element("default"); if (defaultElement != null) { foreach (var defaultRuleElement in defaultElement.Elements()) { var defaultRule = DeserializeRule(slot, defaultRuleElement); if (defaultRule != null) { rule.Default.Add(defaultRule); } } } return rule; }