[英]How to generate compile time enum values with a macro function in c#?
我想生成编译时枚举值。
正如我们在c
#define macfun(x) (128 | ((unsigned int)(x) << 16L)
现在,如果想要生成另一个常量,我就是这样做的
#define JISCHAR macfun(3)
我正在制作第三方库的C#包装器,它定义了许多不同类型的常量。
我可以在C#编译时实际生成枚举吗?
计算常量和赋值给变量的其他方法是什么?
在Visual Studio中,您可以在构建之前和之后运行命令。 然后,您可以使用其他程序生成/编辑此枚举。 你基本上可以编辑整个文件。
编辑:您在项目属性下找到此选项,然后在构建事件
一种可能的解决方案是:
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.