Как переопределить строку подключения БД базового класса? - PullRequest
1 голос
/ 18 августа 2011

У меня есть базовый класс (написанный с использованием C # .net), который использует наборы данных для извлечения данных из БД, а строка подключения находится в файле App.config. Поэтому после написания базового класса он был скомпилирован в dll.

И чтобы использовать этот базовый класс для другого проекта, мне нужно переопределить строку подключения к БД, поэтому сначала можно ли это сделать, и, если возможно, кто-нибудь может дать мне пример для этого?

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

Я бы предложил дать вашему классу перегруженный конструктор, например:

private readonly string connectionString;

public Foo() : this(Settings.Default.DbConnectionString) {
}

public Foo(string connectionString) {
    this.connectionString = connectionString;
}

Тогда производный класс может просто передать «переопределенную» строку соединения в конструктор.

Я думаю, что это чище, чем использование полиморфизма с виртуальным свойством и т. Д., Особенно потому, что предположительно строка подключения не изменится в течение срока службы объекта. Вы на самом деле не изменяете поведение (для чего хорош полиморфизм) - вы изменяете инициализацию (для чего хороши параметры конструктора).

0 голосов
/ 18 августа 2011

Сделать строку подключения защищенным виртуальным свойством в базовом классе

class Base {
    protected virtual string ConnectionString { get { ... } } // Get from config.
}

class Sub {
    protected override string ConnectionString { get { ... } } // return the new value.
}
...