我正在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