You can't surpass type-casting obj
to GenericWrapper<MemoryStream>
, because :
object
doesn't know how to convert it self toMemoryStream
obj
is originally aGenericWrapper<MemoryStream>
your only option is to cast obj
to GenericWrapper<MemoryStream>
:
MemoryStream failingCast = (MemoryStream)(GenericWrapper<MemoryStream>)obj;
and having it type-casted to GenericWrapper<MemoryStream>
, it now know how to convert it self implicitly to type MemoryStream
because GenericWrapper<MemoryStream>
has implicit operator definition.