C#泛型继承数据访问
发布时间:2020-12-15 17:20:54 所属栏目:百科 来源:网络整理
导读:嗨,我想创建一个继承的基类,但我遇到了一些问题. 我有两个类几乎完成相同的工作,但从不同的数据库中获取它们使用的数据,并使用不同的内部数据结构来操作数据. 我想在基础中使用虚拟doSomething方法,理想情况下也可以在基础中使用虚拟dataAccess方法. 第二个
|
嗨,我想创建一个继承的基类,但我遇到了一些问题.
我有两个类几乎完成相同的工作,但从不同的数据库中获取它们使用的数据,并使用不同的内部数据结构来操作数据. 第二个问题可以通过使用泛型来解决,但我不能使用泛型来解决第一个问题,因为我使用的DBMl上下文的构造函数不是无参数的. 我是不是错了.我想要干,但似乎正在反对继承. 示例代码如下. 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
}
}
解决方法
Foo和Bar不应该自己调用数据库构造函数,数据库对象应该是构造函数的参数(而不是连接字符串).这个原则称为依赖注入,将解决您的大多数问题.应该很容易然后创建一个新的泛型类DataObjFactory< DataObjType>作为Foo和Bar的替代品.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
