C# code still uses too much reflection (serialization, asp net routing, ORM, view model binding) to be statically compileable.
They seem to be doing something against that with code generators
Reflection is just easier. Unless you go out of your way to use libraries that use code generation, Java is just as bad as C# in this regard.
There's a few bright spots, like MapStruct for object->object mappings and Dagger2 for dependency injection that are built entirely on code generation. But these are exceptions to the norm