我在C#中创建了一个非可视组件,它被设计为表单上元数据的占位符.
该组件具有一个属性,该属性是自定义对象的集合,该对象标记为Serializable,并实现用于serilizing的GetObjectData和用于deserilizing的公共构造器.
在表单的resx文件中,它将生成用于存储集合的二进制数据,但是每当我对序列化类进行更改时,我都会遇到设计器错误,需要从resx文件中手动删除数据,然后重新创建此数据.
我试过更改构造器,在类中的每个属性周围都有一个try/catch块
try { _Name = info.GetString("Name"); } catch (SerializationException) { this._Name = string.Empty; }
但它仍然崩溃.我得到的最后一个错误是我必须实现IConvertible.
我更喜欢使用xml序列化,因为我至少可以看到它,设计师可以使用吗?
有没有办法使序列化更稳定,更不耐受变化?
编辑:
更多信息...更好的描述也许
我有一个继承自Component的类,它有一个属性是规则的集合.RulesCollection似乎必须标记为Serializable,否则它不会保留其成员.
Rules类也是一个具有属性DesignTimeVisible(false)的Component,用于阻止它在组件托盘中显示,此clas未标记为Serializable.
将标记为Serializable的集合生成resx文件中的二进制数据(不理想),IDE报告Rules类不可序列化.
我认为这个问题超越了一个简单的问题.所以我很快就会关闭它.
如果有人有类似的东西的任何链接,将有很多帮助.