【发布时间】:2015-10-02 15:18:07
【问题描述】:
给定以下两种类类型,它们都是内置 ValidationResult 类的派生类:
class ExamValidationResult : ValidationResult
class ApplicationValidationResult : ValidationResult
我正在使用 Windows 工作流来调用最终将返回验证结果的工作流:
var validationResults = (List<ValidationResult>)workflowInvoker.Invoke(args)["Result"];
一旦调用它,它将返回一个包含先前两种对象类型的列表。 例如。 (在 Visual Studio 2013 中显示,这只是列表中的一项)
对象中底部四个属性默认为ValidationResult类,但可以看到顶部定义了派生类型。
这看起来与 ApplicationValidationResult 完全相同。 所以我的问题是我怎样才能将它们转换回它们的派生类型,而不必手动告诉它。 (我无法有效地做到这一点,因为该列表将包含两种不同的派生类型。)
【问题讨论】:
-
你为什么要把它扔回去?
-
@SergRogovtsev 我想访问的每个类中的某些属性我无法从 ValidationResult 类型访问。调用工作流后我不想访问。
-
但是如果你想使用一个类型的属性,你就知道你期望什么类型。这意味着您可以使用
as。 -
我不能,在问题中我说过列表包含两种不同的对象类型(转换回父类型),我如何确定哪个是哪个?
标签: c# inheritance