在.Net中,我可以(并且应该)将FlagsAttribute
应用于用作位掩码的枚举。这样我就可以使用 HasFlag()
-方法,如果我对它们进行按位运算,ReSharper 不会生气。
在一个项目中,我必须使用用 vb6 编写的 dll 中的枚举,该枚举当然没有FlagsAttribute
。(我看过代码,值是位标志。
尽管每当我使用.HasFlag()
时,VisualStudio都会在代码中将其标记为红色,但它的编译和运行都很好。我可以通过始终将枚举转换为 int(或用注释抑制它,...
然而,我想知道是否有一种更干净的方法,例如将枚举标记为标志一次?
你不能标记外部依赖项 - 如果你有一个dll
,无论它的来源是什么,你不能简单地改变它的内部结构(嗯,你可以,但这需要重写二进制文件)。
一种选择是在 VB6 和您的之间编写自己的标志枚举和映射器,只需在代码中使用您的版本,只需忽略映射层中的问题。