Because they are pretty annoying to implement and most are quite fragile
But this is also it’s greatest strength. Having direct, type-safe access to structured data is truly awesome. What else compares? Certainly not conventional code gen.
And other downfall. Do they still not work with DOTNET Core??