All CIL (Common Intermediate Language) is self-describing through .NET metadata. The CLR checks the metadata to ensure that the correct method is called. Metadata is usually generated by language compilers but developers can create their own metadata through custom attributes. Metadata describes types (e.g. classes, interfaces, ...), methods and parameters (names and types) and attributes that have been applied.
ildasm.exe is a disassembler. It can be used to view compiled .NET binaries.
Write a console program and use ildasm.exe to view meta data (View/MetaInfo/Show) command or (Ctrl + M)