无法将GenericClass <DerivedClass>强制转换为GenericClass <BaseClass>

时间:2019-10-25 13:46:48

标签: c# generics casting base derived

我正在创建一个可以存储任何类型数据的容器。 要从容器获取数据,我可以使用以下方法: AnyTypeResult<T> Get<T>(string name)-从注册为“名称”的容器数据返回并将其强制转换为T。 业务逻辑要求,当我们将数据作为DerivedClass的GenericType添加到容器时,可以将其作为BaseClass的GenericType获取。 最好的方法是什么。

同样的问题是当我们要将List<B>强制转换为List<A>时。可以通过Linq扩展方法Cast<T>

完成
public class A {}
public class B : A {}
public class C<T> {}

var a = new C<A>();
var b = new C<B>();

var x = (C<A>)b; // cannot convert type

0 个答案:

没有答案