Звучит так, будто вы хотите вернуться обратно к базовому классу, но вам нужна не просто ссылка, а экземпляр вашего базового класса.Если вы хотите сделать это в общем, я думаю, вы могли бы использовать некоторое отражение, чтобы получить все подклассы Animal
и отобразить этот тип обратно в Animal
.Примерно так:
var currentAssem = Assembly.GetExecutingAssembly();
var animals = currentAssem.GetTypes().Where(t => t.IsSubclassOf(typeof(Animal)));
foreach(var animalType in animals)
{
Mapper.CreateMap(animalType, typeof (Animal));
}
Теперь вы можете сопоставить любой подкласс животных обратно с Animal
:
var cat = new Cat { NumberOfLegs = 4, FurColor = "blue" };
var dog = new Dog { NumberOfLegs = 4, WoofType = "squeek" };
var animal1 = Mapper.Map<Cat, Animal>(cat);
var animal2 = Mapper.Map<Dog, Animal>(dog);