Одна проблема прослушивала меня достаточно для регистрации на Переполнении стека. В настоящее время, если я хочу сериализировать Цвет к строке XML как именованный цвет, или #rrggbb
, или #aarrggbb
, Я делаю это как это:
[XmlIgnore()]
public Color color;
[XmlElement(ElementName = "Color")]
public String color_XmlSurrogate
{
get { return MyColorConverter.SetColor(color); }
set { color = MyColorConverter.GetColor(value); }
}
Здесь MyColorConverter
делает сериализацию просто способ, которым мне нравится она. Но все это чувствует себя подобно клуджу с дополнительным полем и так далее. Существует ли способ заставить его работать в меньшем количестве строк, возможно, соединяя TypeDescriptor с атрибутами C#, связанными с XML?
Боль, не правда ли? Это все, что вы можете сделать с XmlSerializer
, если вы не реализуете IXmlSerializable
(что я не рекомендую ). Параметры:
color_XmlSurrogate
как [Browsable (false), EditorBrowsable (EditorBrowsableState.Never)]
- это перестанет отображаться в большинстве привязок данных представлений, а в редакторе кода при ссылке на вашу сборку как dll DataContractSerializer
, который поддерживает частные свойства (но который не поддерживает атрибуты xml; вы можете ' t win ...) кстати, я бы использовал цвет
как свойство, а не поле:
[XmlIgnore]
public Color Color {get;set;}