Esempio n. 1
0
 /// <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());
        }
Esempio n. 3
0
 /// <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);
 }