2010-03-11 44 views
0

當我知道我可以在我的項目類中定義一個新的枚舉DATAFORMAT, 想,我不這樣做,我可以從第3方DLL引用DATAFORMAT。 然後,我也可以使用來自第三方DLL元數據的Enum DataFormat。混淆關於枚舉數據類型定義?

有什麼區別?是否定義了一個新的Enum DataFormat的指導原則?謝謝。

public enum DataFormat 
    { 
     SECS = 0, 
     S2_L = 4, 
     S2_B = 8, 
     S2_BOOLEAN = 12, 
     S2_A = 16, 
     S2_J = 20, 
     S2_U1 = 24, 
     S2_U2 = 25, 
     S2_U4 = 26, 
     S2_U8 = 27, 
     S2_I1 = 28, 
     S2_I2 = 29, 
     S2_I4 = 30, 
     S2_I8 = 31, 
     S2_F4 = 34, 
     S2_F8 = 35, 
     S2_STRING = 36, 
    } 
} 

回答

1

這裏沒有「元數據」 - 枚舉類型仍然是類型。如果一個已經存在於一個單獨的程序集中,那麼您希望在另一個項目中重新創建它的唯一原因是,如果有某些特定原因導致您無法引用原始程序集。

如果在任何解決方案中有兩個(相同或幾乎相同)的相同類型的版本(任何類型),其中「解決方案」包含引用的程序集,那麼您正在運行非常真實的衝突風險或至少混淆,沒有我可以看到的實際利益。

如果該類型不存在,你問它應該創建...通常是一個類型的居住地及其依賴性開始。如果它只是坐在外部組件中,那麼它就不應該在那裏。另一方面,如果外部程序集中的其他類依賴於它,那麼它肯定需要進入該程序或外部程序集的某個依賴項中,否則可能會導致醜陋的循環名稱空間依賴項需要消除(並且在遊戲中稍後可能會非常困難)。

所以,基本上是:不要定義自己的類型等同於已經存在,除非你有一個很好的理由有型,也不要在項目/組件,你實際上並不打算定義任何類型使用它。

+0

非常感謝。 – 2010-03-11 01:27:02

1

我喜歡遵循的一般規則是,你定義類,枚舉,方法和變量與他們工作所需的最小範圍。因此,如果枚舉只能從一個類訪問,那麼將其定義爲該類的成員。如果在班級以外訪問,則將其定義在班級之外。

+0

@codeka,根據你的規則,如果我想在班級以外訪問。那麼我可能有兩種選擇:1.課外; 2.界面元數據。哪一個更好?謝謝。 – 2010-03-11 00:52:43