private T ReplaceConstants <T>(XElement root, string attributeName) { var value = root.GetAttributeValue <string>(attributeName); value = ReplaceConstants(value); return(DataConversion.Convert <T>(value)); }
private bool TryCreateBehaviour(XElement root, IOptionValue optionValue, out OptionBehaviour optionBehaviour) { string name = root.Name.LocalName; optionBehaviour = null; switch (name) { case RangedMinMaxElement.ElementName: { string min = ReplaceConstants <string>(root, RangedMinMaxElement.Attrs.Min); string max = ReplaceConstants <string>(root, RangedMinMaxElement.Attrs.Max); optionBehaviour = new RangedOptionBehaviour(optionValue, min, max); } break; case RangedMaxElement.ElementName: { string max = ReplaceConstants <string>(root, RangedMaxElement.Attrs.Max); optionBehaviour = new RangedOptionBehaviour(optionValue, max, false); } break; case RangedMinElement.ElementName: { string min = ReplaceConstants <string>(root, RangedMinElement.Attrs.Min); optionBehaviour = new RangedOptionBehaviour(optionValue, min, true); } break; case FixedListElement.ElementName: optionBehaviour = CreateFixedListBehaviour(root, optionValue); break; case FlagListElement.ElementName: optionBehaviour = CreateFlagListBehaviour(root, optionValue); break; case MultiListElement.ElementName: { bool sorted = DataConversion.Convert <bool>(ReplaceConstants(root.TryGetAttributeValue(MultiListElement.Attrs.Sorted, MultiListElement.Attrs.Defaults.Sorted).ToString())); string separator = ReplaceConstants(root.TryGetAttributeValue(MultiListElement.Attrs.Separator, MultiListElement.Attrs.Defaults.Separator)); optionBehaviour = CreateMultiListBehaviour(root, optionValue, sorted, separator); } break; case SqlFixedListElement.ElementName: { string query = ReplaceConstants <string>(root, SqlFixedListElement.Attrs.Query); string valueFieldName = ReplaceConstants(root.TryGetAttributeValue(SqlFixedListElement.Attrs.ValueFieldName, SqlFixedListElement.Attrs.Defaults.ValueFieldName)); string displayValueFieldName = ReplaceConstants(root.TryGetAttributeValue(SqlFixedListElement.Attrs.DisplayValueFieldName, SqlFixedListElement.Attrs.Defaults.DisplayValueFieldName)); optionBehaviour = new SqlFixedListOptionBehaviour(optionValue, query, valueFieldName, displayValueFieldName); } break; case SqlFlagListElement.ElementName: { string query = ReplaceConstants <string>(root, SqlFlagListElement.Attrs.Query); string valueFieldName = ReplaceConstants(root.TryGetAttributeValue(SqlFlagListElement.Attrs.ValueFieldName, SqlFlagListElement.Attrs.Defaults.ValueFieldName)); string displayValueFieldName = ReplaceConstants(root.TryGetAttributeValue(SqlFlagListElement.Attrs.DisplayValueFieldName, SqlFlagListElement.Attrs.Defaults.DisplayValueFieldName)); optionBehaviour = new SqlFlagListOptionBehaviour(optionValue, query, valueFieldName, displayValueFieldName); } break; case SqlMultiListElement.ElementName: { string query = ReplaceConstants <string>(root, SqlMultiListElement.Attrs.Query); bool sorted = DataConversion.Convert <bool>(ReplaceConstants(root.TryGetAttributeValue(SqlMultiListElement.Attrs.Sorted, SqlMultiListElement.Attrs.Defaults.Sorted).ToString())); string separator = ReplaceConstants(root.TryGetAttributeValue(SqlMultiListElement.Attrs.Separator, SqlMultiListElement.Attrs.Defaults.Separator)); string valueFieldName = ReplaceConstants(root.TryGetAttributeValue(SqlMultiListElement.Attrs.ValueFieldName, SqlMultiListElement.Attrs.Defaults.ValueFieldName)); string displayValueFieldName = ReplaceConstants(root.TryGetAttributeValue(SqlMultiListElement.Attrs.DisplayValueFieldName, SqlMultiListElement.Attrs.Defaults.DisplayValueFieldName)); optionBehaviour = new SqlMultiListOptionBehaviour(optionValue, query, sorted, separator, valueFieldName, displayValueFieldName); } break; } return(optionBehaviour != null); }
public T GetValue(string value) { return(DataConversion.Convert <T>(value)); }