/// <summary> /// Установить значения, если отстутствуют добавить в контейнер /// </summary> /// <param name="props">Устанавливаемые значения</param> public void Assign(PropContainer props) { if (props != null) { Assign(props.Dictionary); } }
/// <summary> /// Преобразовать контейнер именованных свойств в XML-строку /// </summary> /// <param name="props">Контейнер именованных свойств</param> /// <param name="rootName">Название корневого элемента</param> /// <param name="asElements">Способ записи в XML, true - список элементов, false - список атрибутов</param> /// <returns>Созданная XML-строка</returns> public static string ToXmlString(this PropContainer props, string rootName, bool asElements = false) { StringBuilder str = new StringBuilder(); props.WriteToXml(str.ToXmlWriter(ConformanceLevel.Fragment), rootName, asElements).Close(); return(str.ToString()); }
/// <summary> /// Установить соответсвующие в контейнере значения /// </summary> /// <param name="props">Устанавливаемые значения</param> /// <param name="replace">true - заменинть на переданные</param> public void Set(PropContainer props, bool replace = false) { if (props != null) { Set(props.Dictionary, replace); } else if (replace) { Dictionary.Clear(); } }
/// <summary> /// Переименовать элементы в списке именованых свойств на основе набора соответсвий имён /// </summary> /// <param name="props">Исходный список именованных свойств</param> /// <param name="map">Набор соответствия имён</param> /// <param name="alwaysCopy">Флаг обязательности создания копии списка, даже в случае отсутствия набора соответствий имён</param> /// <returns>Полученный список именованных свойств</returns> public static PropContainer Remap(this PropContainer props, Dictionary <string, string> map, bool alwaysCopy = false) { PropContainer remap; if (props != null && props.Dictionary.Count > 0 && map != null && map.Count > 0) { remap = new PropContainer(); foreach (var prop in props.Dictionary) { remap[map.ContainsKey(prop.Key) ? map[prop.Key] : prop.Key] = prop.Value; } } else if (alwaysCopy && props != null) { remap = new PropContainer(props.Dictionary); } else { remap = props; } return(remap); }
/// <summary> /// Записать контейнер именованных свойств в XML в новый родительский элемент /// </summary> /// <param name="props">Контейнер именованных свойств</param> /// <param name="xml">Создаваемый XML</param> /// <param name="elemName">Название создаваемого родительского элемента</param> /// <param name="asElements">Способ записи в XML, true - список элементов, false - список атрибутов</param> /// <returns>Созданный XML</returns> public static XmlWriter WriteToXml(this PropContainer props, XmlWriter xml, string elemName, bool asElements = false) { return(props == null ? xml : asElements?xml.WriteElements(elemName, props.Dictionary) : xml.WriteAttributes(elemName, props.Dictionary)); }
/// <summary> /// Исключить из контейнера именованный свойств указанное подмножество по именам /// </summary> /// <param name="props">Исходный контейнер именованных свойств</param> /// <param name="names">Подмножество исключаемых имён</param> /// <returns>Полученный контейнер</returns> public static PropContainer Exclude(this PropContainer props, string[] names) { return(props == null ? new PropContainer() : new PropContainer(Exclude(props.Dictionary, names), false)); }
/// <summary> /// Получить значение из контейнера именованных свойств в виде строки /// </summary> /// <param name="props">Контейнер именованных свойств</param> /// <param name="name">Название свойства</param> /// <returns>Значение свойства</returns> public static string GetString(this PropContainer props, string name) { object val = props.GetValue(name); return(val.IsNoValue() ? null : val.ToString()); }
/// <summary> /// Получить значение из контейнера именованных свойств /// </summary> /// <param name="props">Контейнер именованных свойств</param> /// <param name="name">Название свойства</param> /// <returns>Значение свойства</returns> public static object GetValue(this PropContainer props, string name) { return(props == null ? null : props[name]); }
/// <summary> /// Вывести контейнер именованных свойств в консоль /// </summary> /// <param name="props">Контейнер именованных свойств</param> /// <param name="nameContainer">Название контейнера</param> /// <param name="nameItem">Название элемента</param> public static void ToConsole(this PropContainer props, string nameContainer, string nameItem) { props.Dictionary.ToConsole(nameContainer, nameItem); }