无论对象的类型如何,我都需要将CRUD操作合并到单个基类中。我无法修改调用代码,这可能是任何东西......所以如果有一堆调用者看起来像这样:
var state = new State("New York");
state.Save();
var city = new City("New York", state);
city.Save();
var stadium = new Stadium("Yankee Stadium", city);
stadium.Save();
所有这些Save
方法都需要在一个单一的公共基类中处理。
我引导自己的道路是创建一个这些类实现的通用抽象基类,例如以下......
public abstract class PersistableObject<T> where T : class {
public string Id { get; set; }
public static T Find(string id) {}
public void Save() { }
public void Delete() { }
}
然后我将上述对象从此类继承:
public class City: PersistableObject<City> { }
我删除了与具体实现相关的CRUD方法,并且在从抽象基类继承这些各种对象之后,解决方案编译时没有错误。
现在我被卡住了。后备存储是本地XML文档(由我手中的决定)。我猜我可以使用.Net中的普通XML序列化程序将这些序列化为XML,但是有更好的方法吗?我应该使用某种存储库模式吗?
感谢。