Decompilation is not the same as source availability. Any binary can be converted into source that will compile back into a (nearly) equivalent binary. Whether that source code is economically viable to use in some derivative work is an entirely different question. It might be easier for .NET binaries to be decompiled but the point still remains that machine generated source code is not the same as human generated source code.
There is a colossal difference between attempting to decompile a native binary (using a tool like Ghidra) and decompiling a .NET binary. .NET binaries contain all the information necessary to express the original program, except for local variable names.
You are left with something highly readable that will build correctly. Unlike native code disassemblies which need to guess at data types and stack usage.