考虑一下,我有以下3个类/接口:
class MyClass<T> { } interface IMyInterface { } class Derived : IMyInterface { }
我希望能够投射一个MyClass< Derived>进入MyClass< IMyInterface>或反之亦然:@H_301_5@
MyClass<Derived> a = new MyClass<Derived>(); MyClass<IMyInterface> b = (MyClass<IMyInterface>)a;
Cannot convert type 'MyClass<Derived>' to 'MyClass<IMyInterface>'
我确信有一个很好的理由我不能这样做,但我想不出一个.@H_301_5@
至于为什么我想这样做 – 我想象的场景是你理想地想要使用MyClass< Derived>的实例的场景.为了避免许多讨厌的强制转换,你需要将你的实例传递给接受MyClass< IMyInterface>的接口.@H_301_5@
所以我的问题是双重的:@H_301_5@
>为什么我不能在这两种类型之间施放?
>有没有办法保持使用MyClass< Derived>实例的好处?同时仍然可以将其转换为MyClass< IMyInterface>?@H_301_5@