Doing a narrowing conversion of an interface type to a value type consists of first checking that the object instance is a value of the given value type, and then copying the value out of the instance. For the conversion to succeed at runtime, the value must be a reference to an interface that was previously created by a converting a value of that value type. If the source argument is Nothing
or a reference to an incompatible object, a System.InvalidCastException
exception is thrown.