【发布时间】:2013-08-26 20:27:50
【问题描述】:
我们正在构建一个系统,我们希望最终实现“隐藏”数据访问层(以便我们将来可以更改它)。
所以想法是应用程序代码将调用一个接口,该接口将由数据库访问对象实现。所以我们有了接口类:
public interface DatabaseInterface
{
void Create(DataObject obj);
}
那么我们就有了实现接口的类:
public class DatabaseAccess : DatabaseInterface
{
void Create(DataObject obj)
{
Entity dbContext = new Entity();
dbContext.Data.Add (obj);
dbContext.SaveChanged();
}
}
将这一切加在一起,我们就有了 DataObject 类:
public class DataObject
{
integer Data1;
string Data2;
}
我们的问题出在主应用程序上,因为我不知道 DatabaseInterface 实现是什么:
public class CreateElementOnDatabase
{
DataObject myObj = new DataObject();
myObj.Data1 = 10;
myObj.Data2 = "Test String";
var dbAccess = new DatabaseInterface() <=== I know this is not possible, but don´t know what to do!!!!
dbAccess.Create (myObj);
}
如何在不知道是哪个类的情况下调用已实现的方法?当然,我的设计遗漏了一些东西。
我们真的想让应用程序完全独立于下面的代码。
[编辑 1]
这些实现驻留在不同的类库中。所以我有以下内容: 应用项目 数据库接口项目 数据库访问项目 数据对象项目
【问题讨论】:
标签: c# reflection interface factories