由于不能序列化SolidColorBrush而无法序列化类的错误消息
这个班的公共财产是刷子。
有解决办法吗?
它更复杂。
我尝试使用可以序列化的后台属性。
问题是,我还需要冻结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();
}
}发布于 2013-11-27 19:44:32
您没有说明如何序列化类,但您可能可以使用属性(如Brush或XmlIgnore )来修饰NonSerialized属性或其后台字段。
您可能希望序列化一些其他信息,而不是使您能够在反序列化上重构画笔,例如,它的颜色。
https://stackoverflow.com/questions/20251564
复制相似问题