c#范围/打字/分配问题

时间:2010-12-21 15:16:45

标签: c#-3.0 c#-4.0

嗨,还有另一个快速的问题。

我想创建一个变量对象,以便根据某些内容的值,根据需要进行转换。 e.g。

var rule;
switch (seqRuleObj.RuleType) {
                case SeqRuleObj.type.Pre :
                    rule = new preConditionRuleType();
                    rule = (preConditionRuleType)seqRuleObj.Rule;
                    break;
                case SeqRuleObj.type.Post :
                    rule = new postConditionRuleType();
                    rule = (postConditionRuleType)seqRuleObj.Rule;
                    break;
                case SeqRuleObj.type.Exit :
                    rule = new exitConditionRuleType();
                    rule = (exitConditionRuleType)seqRuleObj.Rule;
                    break;
                default :
                    break;
            }
            String result;
            foreach (sequencingRuleTypeRuleConditionsRuleCondition cond in rule.ruleConditions.ruleCondition) {

      ....../ blah
}

所以基本上这不起作用。 c#将不允许我在每种情况下创建一个新对象,因为名称已定义。

我可以将foreach循环粘贴到每个案例中,但对我来说这是一种浪费,因为除了名称之外,所有对象都完全相同。

1 个答案:

答案 0 :(得分:2)

这些类型是从公共类继承还是实现通用接口?如果是,则代替使用var rule,将rule声明为基本类型/接口。

如果他们没有公共类/接口并且你可以控制这些类型,那么为它们创建一个基类/接口。