Вариант использования: пользователь настраивает шрифт для объекта в области конструктора, который мне нужно загрузить / сохранить в моем хранилище данных. Т.е. такие настройки, как полужирный, курсив, размер, имя шрифта, необходимо сохранить.
Есть ли какой-нибудь простой (и надежный) механизм для преобразования / чтения из строкового представления объекта шрифта (в этом случае мне понадобится только один атрибут)? Или несколько свойств в сочетании с настраиваемой логикой - правильный вариант?





Используйте Тип преобразователя:
Font font = new Font("Arial", 12, GraphicsUnit.Pixel);
TypeConverter converter = TypeDescriptor.GetConverter(typeof (Font));
string fontStr = converter.ConvertToInvariantString(font);
Font font2 = (Font) converter.ConvertFromString(fontStr);
Console.WriteLine(font.Name == font2.Name); // prints True
Если вы хотите использовать сериализацию XML, вы можете создать оболочку класса Font, которая будет хранить некоторое подмножество свойств Font.
Примечание (Гишу) - Никогда не обращайтесь к конвертеру типов напрямую. Вместо этого получите доступ к соответствующему преобразователю с помощью TypeDescriptor. Очень важно :)
Я думаю, что ConvertFromInvariantString() следует использовать как аналог ConvertToInvariantString() (вместо ConvertFromString(), как в приведенном выше примере).
В каком типе хранилища данных вам нужно это сохранить? Если в файле могут быть сохранены только пользовательские настройки, вы можете сериализовать объект шрифта в файл настроек либо в двоичном, либо в xml (если вы хотите иметь возможность редактировать файл конфигурации напрямую). Пространства имен сериализации (System.Xml.Serialization и System.Runtime.Serialization) предоставляют все инструменты для этого без написания специального кода.
Сайт MSDN по сериализации XML: Сериализация XML в .NET Framework
[РЕДАКТИРОВАТЬ] Итак, объект шрифта не может быть сериализован. ой, извините.
Объект шрифта не сериализуем.
В проекте, над которым я работаю, я использовал несколько свойств.
Я сохраняю шрифт в таблице базы данных, выделяя его имя, размер, стиль и единицы измерения, а затем сохраняю эти значения.
Воссоздать шрифт по запросу после получения этих значений совсем несложно.
Отлично! .. работает как разрекламировано - спасибо аку. Голосуя ближе к отметке 5К :)