2010-12-21 64 views
0

嗨,還有一個簡單的問題。c#scope/typing/assignment question

我想創建一個變量對象,以便取決於某些東西的值,它會根據需要進行轉換。例如

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循環粘貼到每個案例中,但這對我來說太浪費了,因爲對象除了名字之外完全一樣。

+0

歡迎來到Stackoverflow!據我所知,這個問題與動態對象無關。這是範圍/打字/分配問題。請適當修改 - 一個正確的題目會讓更多的人看到它。 – Greg 2010-12-21 15:41:14

+0

好的沒問題greg,謝謝。 – Shannow 2010-12-22 09:49:36

回答

2

這些類型是從一個普通類繼承還是實現一個通用接口?如果是這樣,則代替使用var rule,聲明rule是基本類型/接口。

如果它們沒有共同的類/接口,並且您可以控制這些類型,則爲它們創建一個基類/接口。