Выбираете между типами данных и методами сопоставления вызовов? - PullRequest
2 голосов
/ 24 июня 2009

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

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

objectInstance.Name = "New name";

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

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

1 Ответ

4 голосов
/ 24 июня 2009

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

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

SomeBase objectInstance;

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

objectInstance.Name = "New name";

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...