/// <summary>
 /// Сериализует активные свойства.
 /// </summary>
 /// <returns>Пары (имя свойства, сериализованное значение).</returns>
 public IEnumerable <KeyValuePair <string, string> > SerializeProperties()
 {
     // ReSharper disable LoopCanBeConvertedToQuery
     foreach (PropertyInfo property in GlyphsHelper.GetActiveProperties(this))
     {
         yield return(new KeyValuePair <string, string>(
                          property.Name,
                          Core.Instance.Serializers.Serialize(property.PropertyType, property.GetValue(this, null))));
     }
     // ReSharper restore LoopCanBeConvertedToQuery
 }
        /// <summary>
        /// Десериализует активные свойства.
        /// </summary>
        /// <param name="pairs">Пары (имя свойства, сериализованное значение).</param>
        /// <returns>Свойства, которых не удалось задать (нет в глифе).</returns>
        public IEnumerable <string> DeserializeProperties(IEnumerable <KeyValuePair <string, string> > pairs)
        {
            // Активные свойства глифа.
            var activeProperties = new List <PropertyInfo>(GlyphsHelper.GetActiveProperties(this));

            // Проходим по заданным парам...
            foreach (KeyValuePair <string, string> kvp in pairs)
            {
                // Найдено ли свойство, чтобы задать ему значение.
                bool finded = false;

                // Проходим по активным свойствам глифа...
                foreach (PropertyInfo property in activeProperties)
                {
                    // Если нашли нужное свойство, задаём ему значение.
                    if (property.Name == kvp.Key)
                    {
                        property.SetValue(
                            this,
                            Core.Instance.Serializers.Deserialize(property.PropertyType, kvp.Value),
                            null);

                        // Свойство найдено, значит...
                        finded = true;

                        // ...больше его искать не нужно.
                        break;
                    }
                }

                // Если свойство в глифе не найдено, вернём его имя.
                if (!finded)
                {
                    yield return(kvp.Key);
                }
            }
        }