gpt4 book ai didi

c# - 基于参数加载实现

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:01 27 4
gpt4 key购买 nike

我有这个问题:

在 C# 中,我正在制作一个应该连接到各种数据库(SQLite、SQL Server Compact、MS Access 等)的程序。我在 app.config 中设置了一个名为“dbType”的参数(SQLlite 可以是 1,SQL Server Compact 可以是 2,MS Access 可以是 3,等等)。该参数应在程序运行时由用户更改,使用下拉菜单或类似的东西。

然后程序读取此参数并创建与所选数据库对应的数据库接口(interface) (IDatabase) 实现的实例。

代码是:

class ObjectDatabaseCreator
{
protected ObjectDatabase objectDb;
protected Object objectDAO;
protected int dbType;
protected String dbName;

public ObjectDatabaseCreator()
{
}

public ObjectDatabaseCreator(String dbName)
{
this.dbType = ObjectConfiguration.getDbType();
this.dbName = dbName;
}

public ObjectDatabase getObjectDatabase()
{
//1 - SQLite; 2-SQLServer Compact; 3-SQLServer Express; 4-MS Access


switch (dbType)
{


case 1:
objectDb = new ObjectDatabase(new Database_Impl_1(dbName));
break;

case 2:
objectDb = new ObjectDatabase(new Database_Impl_2(dbName));
break;

case 3:
objectDb = new ObjectDatabase(new Database_Impl_3(dbName));
break;

case 4:
objectDb = new ObjectDatabase(new Database_Impl_4(dbName));
break;
}

return objectDb;
}

}

好吧,这似乎可行,但我想知道是否有可能使添加另一个数据库变得更容易,我的意思是,如果有另一个数据库,我应该修改这个类,重新编译等。

我怎样才能实例化 BLL 类的其他实现,比方说 Person、Customer 等?这些也发生了变化,我应该添加更多的类。

谢谢,旅行

最佳答案

看看MEF ... 它很有用,因为它添加了目录的概念。在文件夹中的程序集中定义任意数量的 IDataBaseImplemention 类,MEF 将允许您“导入”所有找到的类。

MEF 包含在 .Net 框架(来自 V4)中,但还有许多其他框架可以完成这项工作。

关于c# - 基于参数加载实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com