C# 3.0 c#范围/打字/作业问题

C# 3.0 c#范围/打字/作业问题,c#-3.0,c#-4.0,C# 3.0,C# 4.0,嗨,还有一个简短的问题 我想创建一个变量对象,以便根据某个对象的值,根据需要对其进行转换。e、 g var rule; switch (seqRuleObj.RuleType) { case SeqRuleObj.type.Pre : rule = new preConditionRuleType(); rule = (preConditionRuleType)seqRuleObj.R

嗨,还有一个简短的问题

我想创建一个变量对象,以便根据某个对象的值,根据需要对其进行转换。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#不允许我在任何情况下创建新对象,因为名称是aleady定义的


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

这些类型是从公共类继承还是实现公共接口?如果是,则不使用
var规则
,而是将
规则
声明为基本类型/接口


如果它们没有公共类/接口,而您可以控制这些类型,则为它们创建一个基类/接口。

+1:这种情况正是类继承的目的。您好,谢谢您的回复。是的,它们源自普通类型。我声明这个规则是可以的,除了foreach中仍然说使用未分配的局部vardoh!我的默认案例为空。再次感谢您的帮助。欢迎来到Stackoverflow!据我所知,这个问题与动态对象无关。这是一个范围/类型/分配问题。请适当地重新命名-一个标题正确的问题会让更多合适的人看到它。好的,没问题,格雷格,谢谢。