如何重写基类'DB连接字符串

本文关键字:DB 连接 字符串 基类 何重写 重写 | 更新日期: 2023-09-27 18:06:05

我有一个基类(使用c# .net编写),它使用数据集从DB中提取数据,连接字符串在App.config文件中。因此,在编写基类之后,它已经被编译成dll。

和使用这个基类不同的项目,我必须覆盖DB连接字符串,所以首先是可以做到的,如果可能的话,有人能给我一个例子吗?

如何重写基类'DB连接字符串

我建议给你的类一个重载的构造函数,像这样:

private readonly string connectionString;
public Foo() : this(Settings.Default.DbConnectionString) {
}
public Foo(string connectionString) {
    this.connectionString = connectionString;
}

那么派生类可以直接将"被重写的"连接字符串传递给构造函数。

我认为这比使用多态和虚拟属性等更简洁——特别是假设连接字符串在对象的生命周期内不会改变。你并没有真正改变行为(这就是多态性的好处)——你改变了初始化(这就是构造函数参数的好处)

将连接字符串设置为基类中受保护的虚拟属性

class Base {
    protected virtual string ConnectionString { get { ... } } // Get from config.
}
class Sub {
    protected override string ConnectionString { get { ... } } // return the new value.
}