Выбираете между типами данных и методами сопоставления вызовов?

2

Вот что я пытаюсь сделать:

if (a==true) 
{
    dbA objectInstance = new dbA();
}
else
{
    dbB objectInstance = new dbB();
}

objectInstance.Name = "New name";

Я получаю "имя objectInstance не существует в текущем контексте", я предполагаю, потому что def происходит внутри условного.

Должен быть лучший шаблон для этого - должен ли я иметь dbA и dbB наследовать от того же класса?

Теги:
oop
inheritance

1 ответ

4
Лучший ответ

Да, dbA и dbB потребуется общий базовый класс или интерфейс, и что базовый класс или интерфейс должны иметь свойство Name как часть своего публичного контракта.

Тогда вы можете сделать это:

SomeBase objectInstance;

if (a==true) 
{
    objectInstance = new dbA();
}
else
{
    objectInstance = new dbB();
}

objectInstance.Name = "New name";

Я считаю, что интерфейс - ваш лучший выбор здесь, если эти типы уже не имеют базового класса.

  • 1
    Для начала не нужно присваивать значение null - действительно, я бы не стал ясно давать понять, что оно обязательно будет назначено в одном из условий.
  • 0
    Ты прав! Я не был рядом с компилятором, поэтому я не мог вспомнить, будет ли компилятор жаловаться на неназначенную переменную. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню