嗨,我想创建一个基类来继承,但是遇到了一些问题。
我有两个类,它们几乎具有相同的功能,但从不同的数据库获取数据,并使用不同的内部数据结构来操作这些数据。 我想在基类中有一个虚拟的doSomething方法,最好还有一个虚拟的dataAccess方法。
第二个问题可以通过使用泛型来解决,但我无法使用泛型来解决第一个问题,因为我使用的DBMl上下文的构造函数不是无参的。
我是错了吗?我试图做到DRY,但似乎是在违反继承原则。
下面是示例代码。
class Foo {
private _ctx DBML.Database1; // Inherits from System.Data.Linq.DataContext
public Foo(string constring) {
_ctx = new DBML.Database1(constring);
}
private DoSomeThing() {
FooDataObj = DataAccess(1);
}
private FooDataObj DataAccess(int ID)
{
var v = from t in _ctx
where t.Id = ID
select new FooDataObj(t);
return v
}
}
class Bar {
private _ctx DBML.Database2; // Inherits from System.Data.Linq.DataContext
public Bar(string constring)
{
_ctx = new DBML.Database2(constring);
}
private DoSomeThing() {
BarDataObj = DataAccess(1);
}
private BarDataObj DataAccess(int ID) {
var v = from t in _ctx
where t.Id = ID
select new BarDataObj(t);
return v
}
}