我正在编写一个允许用户运行测试的应用程序。测试由许多不同的对象组成,例如配置,温度和基准。设置等在xml之间来回保存。我在我的代码中传递了不同的XElements,所以我可以针对不同情况构建最终的xml文档。我愿做这样的事情:C中的静态方法模板#
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...
}
为什么这些方法必须是静态的? – BoltClock
我希望能够保存配置列表,而无需创建配置实例。虽然这是可能的,但似乎并不需要。 – AGuyInAPlace