使用FlagsAttribute标记引用的dll中的枚举

时间:2012-06-01 12:29:45

标签: c# c#-4.0 vb6 enums interop

在.Net中,我可以(并且应该)将FlagsAttribute应用于用作位掩码的枚举。这样我可以使用HasFlag() - 方法,如果我对它们进行按位操作,ReSharper就不会生气。

在一个项目中,我必须使用vb6中编写的dll的枚举,当然它没有FlagsAttribute。 (我看过代码,值是位标志。)

尽管我使用.HasFlag()时VisualStudio会将其标记为红色,但它编译并运行得很好。我可以通过将枚举强制转换为int(或用注释来抑制它,......)来“禁用”按位操作的ReSharper警告。

但是我想知道是否有一种更清洁的方法,比如将枚举标记为标志一次?

1 个答案:

答案 0 :(得分:3)

你无法标记外部依赖 - 如果你有dll,无论其来源如何,你都不能简单地改变它的内部(嗯,你可以,但那会需要重写二进制文件。)

一个选项是在VB6和你的之间编写自己的标志枚举和映射器,只需在代码中使用你的版本,然后忽略映射层中的问题。