【发布时间】:2016-09-13 22:04:51
【问题描述】:
我有以下类设置如下:
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 之间会有共享元素。我不想去掉虚函数,因为如果有两个单独的方法,有些代码会重复。
有没有我遗漏的模式或练习?我对此有点迷茫,这样的架构变化超出了我的范围,因为我真的不知道“正确”的方式来做到这一点。
【问题讨论】:
标签: c# inheritance polymorphism overriding virtual