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