> compile-time reflection

> use a C# program to generate C code

These seem at odds.

you call the C# program that generates the code as part of your build system

I get it. That's code generation. But it's not compile time reflection.