错误信息:无法序列化类,因为无法序列化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();
}
}