Экземпляр вашего класса, когда-то "рожденный как животное", будет жить как Animal
.Вы можете попытаться привести его к производному классу, но, поскольку сам экземпляр остается Animal
, он потерпит неудачу во всех случаях.
Вот несколько советов, как вы можете изменить его на другой класс:
Вы можете реализовать пользовательское преобразование в другой класс, явно реализовав его с помощью статических методов, например, вы можете реализовать что-то вроде:
public class Cat : Animal
{
public Cat FromAnimal(Animal animal)
{
return new Cat(animal) {Eyes = Color.Blue, ... };
}
}
Вы можете сериализовать и затем десериализовать ваш экземпляр, используя определенные сериализаторы, которые поддерживаютдесериализация в другом классе.
Вы можете реализовать глубокое клонирование своего экземпляра с явными типами возврата производных типов.
Тогда вы просто замените свой старый Animal
новым бордом Cat
и используй его везде ...