我正在C#中創建一個網絡聊天客戶端作爲一個副項目。除了簡單的文本消息外,我還有斜槓前綴的命令可以輸入到輸入文本框中。我使用了一種模塊化方法,通過創建一個包含所有各種命令的枚舉,然後使用屬性裝飾這些命令。C#屬性 - 數組還是重複?
屬性指定可以輸入什麼斜線前綴的命令來觸發命令,以及到主命令標識符和命令的使用任何別名。
實施例:當我嘗試以允許多個別名到主命令
public enum CommandType : byte
{
[PrimaryIdentifier("file"),
AdditionalIdentifier("f"),
CommandUsage("[<recipient>] [<filelocation>]")]
FileTransferInitiation,
[PrimaryIdentifier("accept"),
AdditionalIdentifier("a")]
AcceptFileTransfer,
// ...
}
我的問題出現了。我嘗試過這兩種方法:允許重複AdditionalIdentifier
屬性,或者通過在AdditionalIdentifier
中設置構造函數參數params string[]
。
與前者一樣,我通過裝飾屬性類AttributeUsage
並將AllowMultiple
設置爲true來實現它。雖然這的確能夠達到我所期望的效果,但我覺得,除了其他屬性之外,它可能會非常快地產生幾行別名。
後者也適用,但是,它所產生的compiler warning CS3016,並說這種做法是不符合CLS。顯然,這並不一定會阻止我繼續使用它,但我已經學會了將警告視爲錯誤。
我的實際問題是我應該忽略重複的反對意見,然後繼續使用它們,或者是否有其他解決方案可以使用?
謝謝。
我想你是對的。另一種方法將是您的多構造函數方法,並同時使用AllowMultiple,從而實現更大的靈活性。謝謝! – mgbowen 2009-10-21 22:08:32