![]() |
1
2
对于序列化,可以使用某种查找:
对于反序列化,这两行:
不执行实际转换。他们唯一要做的就是在
当然,演员会成功的。但它不会以任何方式修改
|
![]() |
2
3
在SpecialClass中考虑过serialize()方法吗?这样,如果有一些特殊的注意事项,可以重写base.serialize方法并处理任何唯一的需要。这样,它就已经知道它是什么了,并且不需要条件。 另一件需要考虑的事情可能是一个带有facade模式的helper类。然后可以有一个名为“public SpecialClass DeserializeSpecialClass()”的方法。然后,不必在反序列化程序中强制类型转换,而是可以在目标上强制类型转换。如果你发现你做了太多的转换,那么可以考虑将抽象方法添加到基类中,这个基类将在派生类中实现。 希望这有帮助。 |
![]() |
3
0
|
![]() |
4
0
如果不关心性能,可以使用反射来初始化其名称包含该类型名称的类型。
|
![]() |
5
0
规则1./派生类应该负责序列化和反序列化它们自己,因为它们应该是唯一对存储在XML文档中的其他数据有深入了解的类。 所以从多形性的角度(注意上面的代码不是多态的)您可以做如下的事情
相当直接。但问题不在于序列化或多态行为,而在于从XML中实例化正确的类型。 解决这个问题的一种方法是在XML文档中有一个指定保存它的类型的键,并注册一个负责构造由该键索引的派生类型的工厂(属性有利于这种注册),一旦构造了派生类型,就使用它来反序列化XML。 注意,您的工厂也可以是基类上的静态方法。 比如(当然是未经测试的)。。。。
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |