Это, я думаю, что-то основное в ООП:
Среда: C # /. Net 2.0
Допустим, у меня есть два класса:
public class Animal
{
}
public class Dog : Animal
{
}
Класс обслуживания с двумя методами:
public void DoStuff(Animal animal)
{
Console.Write("Animal stuff");
}
public void DoStuff(Dog animal)
{
Console.Write("Dog stuff");
}
Если я выполню следующий код:
Animal instance = new Animal();
MyService.DoStuff(instance);
Animal instance2 = new Dog();
MyService.DoStuff(instance2);
«Вещи животных» напечатаны дважды.
Итак, мой вопрос: почему? И как я могу получить "Animal stuff" и "Dog stuff" без приведения instance2 или перемещения метода из моего сервиса в мой класс (на самом деле я хотел бы, чтобы мой код работал, но это не так: ()
Спасибо
PS: Это всего лишь пример:)
Поскольку шаблон Visitor не очень привлекателен, я просто перенесу метод моего сервиса в свой класс, ожидая лучшего решения.