2012-12-07 49 views
0

可能重複:
How can I make an 「abstract」 enum in a .NET class library?C#中是否存在某種'Dynamic'Enum?

所以,這裏是我的項目。

我有一個網絡框架,有一個枚舉調用命令。這基本上告訴系統剛剛進來的數據包是否是CONNECT,CHAT,JOIN等等。作爲未來的一步,我想允許插件使用這個可以提供附加命令類型的「框架」。我知道你不能在後來的插件中爲現有的枚舉值添加值,那麼以上我想要做的事情的正確方法是什麼?一類?只是一個整數字段的命令,和一系列的const int像CONNECT = 1,JOIN = 2等?

+0

重點實現*行爲*。代碼,而不是數據。 –

+0

在我看來,沒有必要創建一個可擴展的命令結構。這些命令可以簡單地成爲網絡框架中的常量。插件應該可以自由地以他們喜歡的方式實現他們的命令。如果您想要定義如何創建/處理命令的合同,請使用界面。 – rro

回答

1

你應該請將您的主要消息類型之一設置爲plugin,以便您可以將處理消息的委託委託給插件本身,而不是嘗試自己處理這些當前未知的數據包。另外,每個插件消息都應該包含一個標識符,用於指定哪個插件應該處理它。

一般而言,您需要儘可能地使插件系統模塊化,因此您不必擔心它會如何幹擾您的代碼。

0

我認爲最好的辦法將是創建一個常量類

public class Commands 
{ 
    public const int CONNECT = 1; 
    public const int CHAT = 2; 
    public const int JOIN = 3; 
} 

當用戶要添加新命令類型,他將需要重寫此類

public class PluginCommands: Commands 
{ 
    public const int AddBuddy = 4; 
    public const int Disconnect = 5; 
} 
+0

理想情況下,解決方案將是類型安全的。 –

相關問題