【发布时间】:2011-09-11 20:57:05
【问题描述】:
我有一个基于标志的枚举,虽然它目前没有超过 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 被传递到枚举 here。在示例中,它只是简单地掩盖了
bool类型,看起来好像这个关键字已被删除。我已经搜索了多个 msdn“枚举”页面(我不愿意说“全部”,但为了自己的利益,我看到的太多了)。但是this page 表示要考虑使用 System.Int32 作为数据类型,除非枚举是标志枚举,并且您有超过 32 个标志。
但是,每当我尝试使用自定义类型。 我没有看到任何东西(除了我的例外)明确说您不能使用自己的自定义数据类型,但我也没有找到它的单一实现。
我想明确知道是否可以在自定义类型上构建枚举
【问题讨论】:
标签: c# visual-studio-2010 c#-4.0 language-features