示例#1
0
 public XMLCustomConverterAttribute(Type converterType)
 {
     if (typeof(IXMLValueConverter).IsAssignableFrom(converterType))
     {
         _converter = (IXMLValueConverter)Activator.CreateInstance(converterType);
     }
     else
     {
         throw new ArgumentException("Converter must implement IXMLValueConverter interface.");
     }
 }
示例#2
0
 /// <summary>
 /// Проверяет наличие у поля атрибута XMLCustomConverterAttribute и добавляет его значение в словарь конвертеров.
 /// </summary>
 private void CheckCustomConverter(FieldInfo field)
 {
     Attribute[] attributes = Attribute.GetCustomAttributes(field);
     foreach (Attribute attribute in attributes)
     {
         if (attribute.GetType().SameType(typeof(XMLCustomConverterAttribute)))
         {
             IXMLValueConverter converter = (attribute as XMLCustomConverterAttribute).Converter;
             if (_converters.ContainsKey(converter.TargetType))
             {
                 _converters.Remove(converter.TargetType);
             }
             _converters.Add(converter.TargetType, converter.ConvertBack);
         }
     }
 }
示例#3
0
        /// <summary>
        /// Проверяет наличие у поля атрибута XMLCustomConverterAttribute и добавляет его значение в словарь конвертеров.
        /// </summary>
        private void CheckCustomConverter(FieldInfo field)
        {
            Attribute[] attributes = Attribute.GetCustomAttributes(field);
            foreach (Attribute attribute in attributes)
            {
                if (attribute.GetType().SameType(typeof(XMLCustomConverterAttribute)))
                {
                    IXMLValueConverter converter = (attribute as XMLCustomConverterAttribute).Converter;

                    //Кто придумает, как проверять конвертеры на соответствие и лишний раз не удалять/добавлять одинаковые, может взять с полки пирожок.
                    if (_converters.ContainsKey(converter.TargetType))
                    {
                        _converters.Remove(converter.TargetType);
                    }

                    _converters.Add(converter.TargetType, converter.Convert);
                }
            }
        }