tener en cuenta, que tienen las siguientes 3 clases/interfaces:genéricos fundición y el tipo genérico
class MyClass<T> { }
interface IMyInterface { }
class Derived : IMyInterface { }
Y yo quiero ser capaz de lanzar un MyClass<Derived>
en una viceversa MyClass<IMyInterface>
o:
MyClass<Derived> a = new MyClass<Derived>();
MyClass<IMyInterface> b = (MyClass<IMyInterface>)a;
Pero consigo errores de compilación si trato:
Cannot convert type 'MyClass<Derived>' to 'MyClass<IMyInterface>'
estoy seguro de que hay una muy buena re así que por qué no puedo hacer esto, pero no puedo pensar en ninguno.
En cuanto a por qué quiero hacer esto - El escenario que estoy imaginando es aquel en el que idealmente se quiere trabajar con una instancia de MyClass<Derived>
para evitar muchos lanzamientos desagradables, sin embargo, debe pasar su instancia a un interfaz que acepta MyClass<IMyInterface>
.
Así que mi pregunta es doble:
- Por qué no puedo fundido entre estos dos tipos?
- ¿Hay alguna forma de mantener la amabilidad de trabajar con una instancia de
MyClass<Derived>
mientras se puede convertir esto enMyClass<IMyInterface>
?