我正在编写一个应用程序,允许用户运行测试。测试包括许多不同的对象,例如配置、温度和基准测试。设置等内容在xml之间保存。在我的代码中,我传递不同的XElements,以便可以根据不同情况构建最终的xml文档。我希望能够像这样做:
public abstract class BaseClass<T>
{
abstract static XElement Save(List<T>);
abstract static List<T> Load(XElement structure);
}
public class Configuration : BaseClass<Configuration>
{
public string Property1 { get; set; }
public string Property2 { get; set; }
//etc...
public static XElement Save(List<Configuration>)
{
XElement xRoot = new XElement("Root");
//etc...
return xRoot;
}
public static List<Configuration> Load(XElement structure)
{
List<BaseClass> list = new List<BaseClass>();
//etc...
return list;
}
}
public class Temperature : BaseClass<Temperature>
{
public float Value { get; set; }
public static XElement Save(List<Temperature>)
{
//save
}
public static List<Temperature> Load(XElement structure)
{
//load
}
}
[编辑]:修正问题(更改以上函数的签名)[/编辑]
当然,我实际上是不被允许重写BaseClass的静态方法的。有什么最好的方法来解决这个问题呢?我希望尽可能多地使以下代码有效:
List<Temperature> mTemps = Temperature.Load(element);
List<Configuration> mConfigs = Configuration.Load(element);
Temperature.Save(mTemps);
Configuration.Save(mConfigs);
[编辑]修改了上面的意图使用代码[/编辑]
我能想到的唯一解决方案是以下内容,但这是不可接受的:
public class File
{
public static XElement Save(List<Temperature> temps)
{
//save temp.Value
}
public static XElement Save(List<Configuration> configs)
{
//save config.Property1
//save config.Property2
}
//etc...
}