我有一个上下文,我不知道我的viewModel的具体类型是什么,但是,我有一个viewModel的基本类型。
如何在不重新创建对象的情况下将SomeClass<T>
转换为SomeClass<BaseOfT>
?
我对SomeClass
的签名是SomeClass<T> where T : BaseOfT
使用as
或隐式运算符时,会导致运行时错误(或null
ofc)时生成as
。
答案 0 :(得分:1)
你不能。请考虑以下示例,其中显示了为什么&#34; A
是B
&#34;的子类型。并不意味着&#34; T<A>
是T<B>
&#34;的子类型:
List<object> myListOfObjects = (List<object>)myListOfCats;
myListOfObjects.Add(new Dog());
但是,您可以使用接口声明中的covariant interfaces创建out
generic modifier:
ISomeInterface<BaseClassOfT> a = new SomeClass<T>();