Полиморфизм и перегрузка статическими методами в C #.

Я пытался создать фабрику, предполагаемую, чтобы вернуть другой объект общего интерфейса (скажем, элемент ) в соответствии с входным параметром (я называю его контекстом) функции GetITem (A Контекст)

Теперь предположим, что я определяю новый тип контекста: B , который наследует из A .

Я хотел вернуть другой предмет в зависимости от того, был ли объект на заводе был классом B или A .

Я пытался сделать следующим образом (перегрузка метода):

class Factory
{
   static Item getItem(A context) {...}
   static Item getItem(B context) {...}
}

Это работает нормально, если я сделаю что-то вроде этого:

B bContext=new B();
Item it=Factory.getItem(bContext);

Однако, если я бросил и объекцию к типу A :

A bContext=(A) new B();
Item it=Factory.getItem(bContext);

Первый фабричный метод называется.

Я думал, что полиморфизм обеспечит выполнение второго метода даже после литого вещества, и я хотел бы знать, если я что-то пропустил?

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

8
задан SRKX 28 July 2011 в 12:13
поделиться