我无法序列化类的错误消息,因为无法序列化SolidColorBrush
该类具有Brush
的公共属性有修复吗?
它更复杂 我尝试使用可以序列化的支持属性 问题是我还需要冻结HighLight,这样我就可以在BackgroundWorker上创建了 如果我为HighLight使用可序列化的后备属性,则Highlight.Freeze失败
[Serializable()]
public class WordIdLenHightlight : Object
{
private string highlightHex;
public Int32 ID { get; private set; }
public Byte Len { get; private set; }
//[NonSerialized]
public Brush Highlight { get; private set; }
//{ if (string.IsNullOrEmpty(highlightHex)) return null; else return new SolidColorBrush((Color)ColorConverter.ConvertFromString(highlightHex)); }
public string HighlightHex { get { return highlightHex; } }
public override bool Equals(Object obj)
{
// Check for null values and compare run-time types.
if (obj == null) return false;
if (!(obj is WordIdLenHightlight)) return false;
WordIdLenHightlight comp = (WordIdLenHightlight)obj;
return (comp.ID == this.ID);
}
public override int GetHashCode()
{
return ID;
}
public WordIdLenHightlight(WordIdLenHightlight w)
{
ID = w.ID; Len = w.Len;
Highlight = w.Highlight;
highlightHex = w.Highlight.ToString();
Highlight.Freeze();
}
public WordIdLenHightlight(Int32 id, byte len, Brush highlight)
{
ID = id; Len = len;
Highlight = highlight;
//highlightHex = Highlight.ToString();
Highlight.Freeze();
}
public WordIdLenHightlight(Int32 id, byte len, string HighlightHex)
{
highlightHex = HighlightHex;
ID = id;
Len = len;
Highlight = new SolidColorBrush((Color)ColorConverter.ConvertFromString(highlightHex));
Highlight.Freeze();
}
}
答案 0 :(得分:2)
您没有说明如何序列化类,但您可以通过Brush
或NonSerialized
等属性来装饰XmlIgnore
属性或其支持字段。< / p>
您可能希望序列化一些其他信息,而不是使您能够在反序列化时重建Brush,例如,它的颜色。