я следующие классы созданы так:Наследование и функции с различными типами возвращаемых
class Test
{
public virtual subSmallObject CreateSmallObject
{
return new subSmallObject();
}
}
abstract class subSmallObject
{ string test; }
class subSmallObjectA : subSmallObject
{ string testA; }
class subSmallObjectB : subSmallObject
{ string testB; }
Теперь, вместо того чтобы использовать класс Test везде, мне нужно использовать производный класс Test, давайте называть их класс TestA и TestB. Для тестов A и B необходимо, чтобы класс CreateSmallObject возвращал либо subSmallObjectA, либо SubSmallObjectB.
Так обычно я мог бы просто сделать
class TestA : Test
{
override subSmallObject CreateSmallObject()
{
return new subSmallObjectA();
}
}
class TestB : Test
{
override subSmallObject CreateSmallObject()
{
return new subSmallObjectB();
}
}
Но проблема в том, что я не могу затем бросить subSmallObject отдачу от тех subSmallObjectA или subSmallObjectB, из-за карапуз он требованиям задачи под рукой (это было ломать много вещей, которые я не контролирую. Эти вещи ожидают либо smallSubObjectA, либо subSmallObjectB). Будут общие элементы между subSmallObjectA и subSmallObjectB. Я не хочу исключать виртуальную функцию, потому что некоторый код будет повторяться, если есть два отдельных метода.
Есть ли какой-либо образец или какая-либо практика там, что мне не хватает? Я немного потерял это, и такие архитектурные изменения выходят за рамки меня, так как я действительно не знаю «правильный» способ сделать это.