我有以下代码。我得到了一个我不知道类型的对象。我必须检查三个条件来检查它的类型,然后进行正确的转换。
有没有办法在运行时获取对象类型并进行转换,而不需要检查任何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;
}
((TreeNodeInfo)ParentTreeNode.Tag).Handle
提取到一个单独的变量中,你的代码会更加清晰易懂。你还应该考虑使用is
而不是调用GetType()
。 - Jon Skeet