我定义了两个值的类:
[Serializable, TypeConverterAttribute(typeof(RangeConverter))]
public class Range : ICloneable, IEquatable<Range>, IEqualityComparer<Range>
{
long min;
long max;
public long Min
{
get { return min; }
set { min = value; }
}
//[etc....]
}
RangeConverter
与.NET SizeConverter完全相同,但由于从int
更改为long
而进行了少量更改。
然后,在我的自定义用户控件中,我有一个属性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
// I tried also this:
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Range SelectedRange
{
get { return range; }
set { range = value;}
}
此属性永远不会序列化到designer.cs。我在这里找不到具体的东西吗?有时我从VisualStudio得到一个错误,说Rage没有转换为InstanceDescriptor。这个问题可以解释缺乏序列化吗?
答案 0 :(得分:0)
好的我找到了原因。我的Range类有其他字段,其中一个字段不可序列化但仍然没有以这种方式标记。通过将属性[NonSerialized]
添加到该字段,Range类被正确序列化为designer.cs