с # сфера / типирование / задание вопрос - PullRequest
0 голосов
/ 21 декабря 2010

Привет, еще один быстрый вопрос.

Я хотел бы создать переменный объект, чтобы в зависимости от значения чего-либо он приводился по мере необходимости. например,

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 Ответ

2 голосов
/ 21 декабря 2010

Эти типы наследуются от общего класса или реализуют общий интерфейс?Если это так, то вместо использования var rule объявите rule как базовый тип / интерфейс.

Если у них нет общего класса / интерфейса и у вас есть контроль над этими типами, тогда создайтебазовый класс / интерфейс для них.

...