具有自定义TypeConverter的属性未序列化为deisgner.cs

时间:2015-10-05 15:57:09

标签: c# serialization type-conversion custom-controls designer

我定义了两个值的类:

[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。这个问题可以解释缺乏序列化吗?

1 个答案:

答案 0 :(得分:0)

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