//------------------------------------------------------------------------------ public static string GetFullSettingName(Type settingsType, MemberInfo mi, SettingBaseAttribute baseSettingAttr, ISettingsSerializerWishes wishes, SettingNameMode nameMode) { var delimeter = GetSettingNameDelimeter(wishes); Debug.Assert(mi != null); Debug.Assert(baseSettingAttr != null); string settingName; if (string.IsNullOrEmpty(baseSettingAttr.Name)) { settingName = mi.Name; } else { settingName = baseSettingAttr.Name; settingsType = null; } settingName = GetFullSettingNameByPatternAndAddPrefix(settingName, wishes, settingsType, nameMode); return(settingName); }
//------------------------------------------------------------------------------ static string GetFullSettingNameByPatternAndAddPrefix(string settingName, ISettingsSerializerWishes wishes, Type settingsType, SettingNameMode nameMode) { if (settingsType != null) { var settingNamePattern = SettingsBaseConfiguration.SettingsNamePattern; string updatedSettingName; string updatedClassName; string updatedNamespaceName; if (wishes != null) { updatedSettingName = wishes.RemoveInappropriateSymbols(settingName); updatedClassName = wishes.RemoveInappropriateSymbols(settingsType.Name); updatedNamespaceName = wishes.RemoveInappropriateSymbols(settingsType.Namespace); } else { updatedSettingName = settingName; updatedClassName = settingsType.Name; updatedNamespaceName = settingsType.Namespace; } settingNamePattern = settingNamePattern.Replace(SettingsBaseConfiguration.FieldNamePatternName, updatedSettingName); var delimeter = GetSettingNameDelimeter(wishes); settingNamePattern = settingNamePattern.Replace(SettingsBaseConfiguration.DelimeterPatternName, delimeter.ToString()); if (String.IsNullOrEmpty(settingsType.Namespace)) { // remove empty namespace if it doesn't exist settingNamePattern = settingNamePattern.Replace(SettingsBaseConfiguration.NamespacePatternName, ""); } else { settingNamePattern = settingNamePattern.Replace(SettingsBaseConfiguration.NamespacePatternName, updatedNamespaceName); } settingNamePattern = settingNamePattern.Replace(SettingsBaseConfiguration.ClassNamePatternName, updatedClassName); settingName = settingNamePattern; } var fullSettingName = SettingNameFormatInfo.AddSettingNameModeAndVersion(settingName, wishes, nameMode); return(fullSettingName); }
//------------------------------------------------------------------------------ public static char GetSettingNameDelimeter(ISettingsSerializerWishes wishes) { char delimeter = SettingsBaseConfiguration.DefaultDelimeter; if (wishes != null) { delimeter = wishes.Delimeter(); } if (delimeter != '.' && delimeter != '_') { Debug.Assert(false, String.Format("Unknown delimeter '{0}'. Set to default '{1}'", delimeter, SettingsBaseConfiguration.DefaultDelimeter)); delimeter = SettingsBaseConfiguration.DefaultDelimeter; } return(delimeter); }
//------------------------------------------------------------------------------ public static string AddSettingNameModeAndVersion(string settingName, ISettingsSerializerWishes wishes, SettingNameMode nameMode) { var delimeter = GetSettingNameDelimeter(wishes); settingName = SettingNameFormatInfo.CurrentVersionPrefix + delimeter + settingName; if (nameMode == SettingNameMode.Dynamic) { settingName = SettingNameFormatInfo.DynamicSettingNamePrefix + delimeter + settingName; } else if (nameMode == SettingNameMode.Service) { settingName = SettingNameFormatInfo.ServiceSettingNamePrefix + delimeter + settingName; } return(settingName); }
//------------------------------------------------------------------------------ public static string GetSettingsTypeInfo(Type settingsType, ISettingsSerializerWishes wishes) { var delimeter = SettingNameFormatInfo.GetSettingNameDelimeter(wishes); string settingsTypeInfo; if (wishes != null) { var updatedNamespaceName = wishes.RemoveInappropriateSymbols(settingsType.Namespace); var updatedClassName = wishes.RemoveInappropriateSymbols(settingsType.Name); settingsTypeInfo = updatedNamespaceName + delimeter + updatedClassName; } else { settingsTypeInfo = settingsType.Namespace + delimeter + settingsType.Name; } return(settingsTypeInfo); }
//------------------------------------------------------------------------------ public static string InsertSettingNamePrefix(string fullSettingName, string prefix, ISettingsSerializerWishes wishes) { var delimeter = GetSettingNameDelimeter(wishes); // ^(([DS]_)?v\d+_)(.*) var strMatch = String.Format("^(([{0}{1}]{2})?{3}\\d+{2})(.*)", Regex.Escape(SettingNameFormatInfo.DynamicSettingNamePrefix), Regex.Escape(SettingNameFormatInfo.ServiceSettingNamePrefix), Regex.Escape(delimeter.ToString()), Regex.Escape(SettingNameFormatInfo.CurrentVersionPrefixStartPart)); Match match = Regex.Match(fullSettingName, strMatch, RegexOptions.None); if (match.Success) { fullSettingName = match.Groups[1] + prefix + delimeter + match.Groups[3]; return(fullSettingName); } throw new ArgumentException(String.Format("incorrect setting name: {0}", fullSettingName)); }
//------------------------------------------------------------------------------ static string GetFullDynamicSettingsOrderSettingNameImpl(string settingName, ISettingsSerializerWishes wishes, Type settingsClassType) { var fullSettingName = GetFullSettingName(settingName, wishes, settingsClassType, SettingNameMode.Service); return(fullSettingName); }
//------------------------------------------------------------------------------ public static string GetFullDynamicSettingsCustomOrderSettingName(ISettingsSerializerWishes wishes, Type settingsClassType) { const string settingName = "DynamicSettingsCustomOrder"; return(GetFullDynamicSettingsOrderSettingNameImpl(settingName, wishes, settingsClassType)); }
//------------------------------------------------------------------------------ public static string GetFullSettingName(string settingName, ISettingsSerializerWishes wishes, Type settingsType, SettingNameMode nameMode) { return(GetFullSettingNameByPatternAndAddPrefix(settingName, wishes, settingsType, nameMode)); }