У нас есть ряд классов, которые являются производными от общего класса:Кастинг Классы и Настройка Общие ценности
public class OurBaseClass
{
public string StatusMessage { get; set;}
[other properties]
}
public class ProcessClass : OurBaseClass
{
public string SomeProcessInformation { get; set;}
public string SomeMoreProcessInformation { get; set;}
[other properties]
}
Мы тогда пытались создать одну функцию, чтобы установить основные свойства SpecificProcessClass и тока есть (который не работает):
public object DefaultResponse(string messageText)
{
return new OurBaseClass
{
StatusMessage = messageText,
[other properties] = ...
}
};
с целью, чтобы мы могли иметь
ProcessClass resp = (ProcessClass) DefaultResponse("Some Message");
resp.SomeProcessInformation = "";
resp.SomeMoreProcessInformation = "";
[other properties] = ...
return resp;
Обоснование состоит в том, чтобы минимизировать количество повторного кодирования и облегчить чтение функций (глазом); это вызывает ошибку для следующего.
System.InvalidCastException: Unable to cast object of type 'OurBaseClass' to type 'ProcessClass'
Хотя не совсем удивлен результатом, как ProcessClass происходит от OurBaseClass, я предположил бы, что это можно сделать, просто не знаю, как ...
Это не представляется возможным бросить экземпляр базового класса (менее конкретный класс) к экземпляру производного класса (более конкретный класс), потому что производный класс может/должен иметь больше функциональности, чем базовый класс. Другой способ работы отлично, вы можете привести экземпляр производного класса к экземпляру базового класса. –