Metadata is binary information describing your program that is stored either in a common language runtime portable executable (PE) file or in memory. When you compile your code into a PE file, metadata is inserted into one portion of the file, while your code is converted to Microsoft intermediate language (MSIL) and inserted into another portion of the file. Every type and member defined and referenced in a module or assembly is described within metadata. When code is executed, the runtime loads metadata into memory and references it to discover information about your code's classes, members, inheritance, and so on.
.NET Framework: An integral Windows component that supports building, deploying, and running the next generation of applications and Web services.
Metadata: Information that describes every element managed by the common language runtime: an assembly, loadable file, type, method, and so on.
Manifest: An integral part of every assembly that renders the assembly self-describing. The assembly manifest contains the assembly's metadata.
Interoperability : Tools and techniques to interoperate between .NET managed code and unmanaged code include Platform Invoke services and .NET Framework and COM interoperability tools.
Abstract: Abstract classes act as expressions of general concepts from which more specific classes can be derived. You cannot create an object of an abstract class type; however, you can use pointers and references to abstract class types.