向相关类提供不同的数据

本文关键字:数据 | 更新日期: 2023-09-27 18:35:10

我有一个名为WebAction的类。还有一些从WebAction继承的类,如LoginStartWebActionLoginConfirmWebActionSearchWebAction等。它们有很多共同点,但也有很大的不同。它每个人都需要不同的数据集才能工作,但都需要一些数据。到目前为止,我有一个财产

object DataObject {get; set;}

在每个对象中,我已将它们强制转换为适合此指定类的类型(大部分是一些复杂类型)。

我是这样使用它的:

Object data = DataSet;    
for (int i = stepNo; i < _actions.Count; i++)
    {
        _actions[i].SetData(data);
        Response actionResponse = _actions[i].Perform();
        ThrowErrorIfServerError(actionResponse);
        if (i < _actions.Count - 1)
        {
            data = _actions[i].PrepareDataFor(_actions[i + 1].GetType());
        }
     }

但是现在我必须序列化此数据对象并将其保存在某个位置。我无法序列化object类型,因为它可能是一切。

是否有任何好方法可以为一个类系列提供不同但可序列化的数据?

向相关类提供不同的数据

如果在基类中有属性,则它必须是 Object 类型。

如果在派生类型中具有属性,则该属性可以是任何类型的。

您尚未指定正在使用的序列化程序/格式化程序。

如果您使用的是 XmlSerializer,则不需要任何内容,所有公共属性都将被序列化。

如果使用 DataContractSerializer,则必须使用 KnownType 属性指定所有可能的数据对象类型。

如果使用二进制格式化程序,则唯一的先决条件是派生类型必须是可序列化的。

如果您使用的是任何其他序列化程序,这将取决于序列化程序的 API 设计,以及它如何接受自定义类型信息(在序列化/反序列化期间,如果确实需要此信息)。

如果使用 BinarySerializer 序列化它,它将在序列化输出中包含该类型,以便稍后可以将其反序列化为相同的类型,即使您将其作为对象传入。