【发布时间】:2021-10-17 11:42:33
【问题描述】:
大家好,我在一个类中有一个方法,它返回一个子类类型的实例:
class Test
{
public Activos GetActivos(TiposActivo tipoActivo, int idActivo = 0)
{
switch (tipoActivo)
{
case TiposActivo.Cartera:
Carteras carteras = new Carteras();
return carteras;
case TiposActivo.Clase:
Clases clases = new Clases();
return clases;
case TiposActivo.Instrumento:
Instrumentos instrumentos = new Instrumentos();
return instrumentos;
default:
throw new Exception();
}
}
}
在这里,Carteras、Clases 和 Instrumentos 是父 Activos 的子代。
返回后,我想对对象进行操作,但代码不知道父类的对象是 Son1、Child2 还是 Child3 类型。如何识别我正在操作的类的类型?
【问题讨论】:
-
你为什么在乎?你应该继续阅读。 多态性,关于_虚拟方法_和C#中的模式匹配
-
你有一个工厂函数
GetActivos但同时有一个类层次结构。这不会真正起作用。 | 为什么首先你有一个工厂函数也不是很清楚 - 你所做的只是调用构造函数。所以这个函数没有任何意义。 -
其实那种工厂是有用的。考虑类似于绘图程序的东西(特别是如果组件可以插入。组件提供图标、名称和在类级别标识它们的东西。当用户单击并将图标拖到在绘图表面,您的工厂使用标识符来确定如何创建正确的组件。但是,那时几乎所有其他东西都将依赖于虚拟方法
-
@Flydog57 非常感谢。 Flydog57 我会的。反正我很在意,因为它们不一样,如果方法返回父类,我不知道是什么样的对象。还是我应该知道?
-
@Manuel 问题是,这基本上是 XY 问题的设置。您认为奇怪的“多类型工厂方法”无论如何都是实际问题的解决方案。你应该告诉我们实际的、真正的问题是——这样我们就可以帮助你。这样一来,我们只会冒着浪费时间的风险将您引向错误的道路。
标签: c# inheritance methods