【发布时间】:2011-08-17 13:00:16
【问题描述】:
我有下面的代码。我得到一个我不知道其类型的对象。我必须检查 三个 if 条件来检查它的类型,然后进行正确的转换。
有什么方法可以在运行时获取对象类型并进行转换, 不检查任何 if 条件?
我拥有的对象是requirementTemplate,我必须检查它的多种类型以获取它的类型然后进行强制转换。
if (requirementTemplate.GetType() == typeof(SRS_Requirement))
{
((SRS_Requirement)((TreeNodeInfo)ParentTreeNode.Tag).Handle).AssociatedFeature = ((SRS_Requirement)requirementTemplate).AssociatedFeature;
}
else if (requirementTemplate.GetType() == typeof(CRF_Requirement))
{
((CRF_Requirement)((TreeNodeInfo)ParentTreeNode.Tag).Handle).AssociatedFeature = customAttr.saveAttributesCustomList(AttributesCustomListCloned);
}
else if (requirementTemplate.GetType() == typeof(SAT_TestCase))
{
((SAT_TestCase)((TreeNodeInfo)ParentTreeNode.Tag).Handle).AssociatedFeature = ((SAT_TestCase)requirementTemplate).AssociatedFeature;
}
【问题讨论】:
-
为什么用 3 个不同的 C# 版本标记?是哪一个?
-
如果您将
((TreeNodeInfo)ParentTreeNode.Tag).Handle提取到一个单独的变量中开始,您的代码会更加清晰。您还应该考虑使用is而不是调用GetType()。
标签: c# dynamic-typing