我想生成编译时枚举值。
就像在c中所做的
#define macfun(x) (128 | ((unsigned int)(x) << 16L)
现在,如果我想生成另一个常量值,
#define JISCHAR macfun(3)
我正在制作第三方库的C#包装器,它定义了许多不同类型的常量。
我可以在C#编译时实际生成枚举吗?
计算常量并将其分配给变量的其他方法是什么?
答案 0 :(得分:0)
在Visual Studio中,您可以在构建之前和之后运行命令。然后,您可以使用其他程序来生成/编辑该枚举。您基本上可以编辑整个文件。
编辑: 您可以在“项目属性”下找到此选项,然后在“构建事件”下找到
答案 1 :(得分:0)
一种可能的解决方案可能是:
public sealed class UnixDBCSPages
{
public static readonly uint JIS = MakeUnixDBCS(Convert.ToUInt32(0x0C));
public static readonly uint EUCJP = MakeUnixDBCS(Convert.ToUInt32(0x0D));
public static readonly uint CNS11643_1 = MakeUnixDBCS(3);
public static readonly uint EUC_CNS_1 = MakeUnixDBCS(7) ;
public static readonly uint CNS11643_2 = MakeUnixDBCS(4) ;
public static readonly uint EUC_CNS_2 = MakeUnixDBCS(8);
public static readonly uint KSC1987 = MakeUnixDBCS(6);
public static readonly uint GB2312 = MakeUnixDBCS(5);
private static uint MakeUnixDBCS(uint wCodePage)
{
uint wUnixUnmask = Convert.ToUInt32(Flags.UnixUnmask);
return (wUnixUnmask | wCodePage) << 16;
}
}