具有自定义TypeConverter的属性未序列化到designdesigner .cs

本文关键字:序列化 designdesigner cs 属性 自定义 TypeConverter | 更新日期: 2023-09-27 18:16:10

我有一个类定义了两个值long:

[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,除了小的变化,因为从intlong的变化。

然后,在我的自定义用户控件中,我有一个属性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
// I tried also this:
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Range SelectedRange
{
    get { return range; }
    set { range = value;}
}

此属性永远不会序列化到designer.cs。我是不是漏掉了什么特别的东西?有时我从VisualStudio得到一个错误,说Rage没有转换为InstanceDescriptor。这个问题能解释缺乏序列化的原因吗?

具有自定义TypeConverter的属性未序列化到designdesigner .cs

好了,我找到原因了。我的Range类有其他字段,其中一个是不可序列化的,但是仍然没有以这种方式标记。通过将属性[NonSerialized]添加到该字段,Range类被正确地序列化到designer.cs