我有一个基于标志的枚举,虽然它目前不超过64值(长)的边界,它可能会。自定义枚举类型
我使用枚举来描述我们的客户MEF插件/组件的目的。这将是我们实施客户定制的主要机制。
我相当肯定我的老板不会太满意这样的想法,即我们只能服务64位客户,但是我不能在没有Enum的情况下实现这样一个灵活的系统。
理想情况下,我想这样写:
[Flags]
public enum Organisations : MyBinaryFormat
{
// Customers
CustomerA = 1 << 0,
CustomerB = 1 << 1,
CustomerC = 1 << 2,
CustomerD = 1 << 3,
// Special
Any = CustomerA | CustomerB | CustomerC,
HostedCustomers = CustomerA | CustomerC,
}
这是定义我的元数据,不幸的是黑客攻击的类型非常方便的语法是不是真的是我的强项,所以我已经尽我所能研究/实验各地的话题,但不是来了:
This问题说,这是可以使用BitArray类的枚举,这将是理想但是没有提供一个实现。
我见过在VS2008文档中使用的TypeDef传入enum here。在这个例子中,它只是掩盖了
bool
类型,而且看起来好像关键字已被删除。我搜索了多个MSDN“枚举”页面(我不愿意说'全部',但我已经看到太多为我自己的好)。但是this page表示考虑使用System.Int32作为数据类型,除非枚举是一个标志枚举,并且您有超过32个标志。
然而,有一个例外,我不断收到 “ERROR1:类型字节,为sbyte,短,USHORT,INT,UINT,长或ulong预期” 每当我试图使用自定义类型。 我没有看到任何东西(除了我的例外),它明确表示你不能使用自己的自定义数据类型,但我也没有找到它的一个单一的实现。
我想明确地知道,如果在一个自定义类型构造一个枚举可能
我试图避免弱类型的配置,所以我可能会使用(非标志)客户枚举。为了方便的语法,我甚至可以重载运算符来提供联合功能。我的主要反对意见是它还不存在,而我的枚举在一段时间内可以像Int64一样好。 – 2011-06-09 17:56:38