Todo esto es posible por medio de una de las características de .NET llamado Common Type System (CTS).