我正在努力保持我的基础课程#34;清洁"使用XML序列化时,想知道是否还有其他选项。让我先解释一下情况。
我的基类看起来像这样:
public class Project
{
public string Name { get; set; }
public List<AbstractFlow> Flows { get; set; }
}
public abstract class AbstractFlow
{
public string Name { get; set; }
[XmlArray("Steps")]
[XmlArrayItem("Step", Type = typeof(AbstractSolutionSerializer<AbstractStep>))]
public List<AbstractStep> Steps { get; set; }
}
public abstract class AbstractStep
{
public string Name { get; set; }
public int Length { get; set; }
}
这些是在库项目中,派生类驻留在另一个库中。我使用实现IXmlSerializable的自定义AbstractProjectSerializer来使用XML序列化,我需要创建一个中间类:
[XmlRoot("ProjectSerializer")]
public sealed class ProjectSerializer
{
public ProjectSerializer(Project project)
{
[XmlElement("Name")]
public string Name { get; set; }
[XmlArray("Flows")]
[XmlArrayItem("Flow", Type = typeof(AbstractProjectSerializer<AbstractFlow>))]
public string List<AbstractFlow> { get; set; }
}
}
我很满意上面的中间类,但是你注意到我需要进入AbstractFlow并添加XML序列化特定的属性。这对我来说是污染&#34;基类并将它们与XML序列化联系起来。有没有其他方法可以达到我的目的?