Как генерировать значения перечисления времени компиляции с помощью макро-функции в c #? - PullRequest
0 голосов
/ 07 июня 2019

Я хочу генерировать значения перечисления времени компиляции.

Как мы делаем в c

 #define macfun(x) (128 | ((unsigned int)(x) << 16L)

сейчас, если я хочу создать еще одну const vale, я просто делаю

 #define JISCHAR    macfun(3)

Я делаю обертку C # третьегопартийная библиотека и она определила множество различных типов констант.

Могу ли я сгенерировать enum во время компиляции в C #?

Каковы другие способы вычисления константы и присвоения переменной?

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Согласно @ PaulF и аналогичному ответу от здесь .

одним из возможных решений может быть:

     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;
        }
    }
0 голосов
/ 07 июня 2019

В Visual Studio вы можете запускать команды до и после сборки. Затем вы можете сгенерировать / отредактировать это перечисление с помощью другой программы. Вы можете редактировать целые файлы.

EDIT: Эта опция находится в разделе «Свойства проекта», а затем «События сборки»

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...