如何将 AnyClass<T> 转换为 AnyClass<BaseClassOfT> implicitly/Without 重新创建对象
How can I convert AnyClass<T> to AnyClass<BaseClassOfT> implicitly/Without recreating an object
我有一个上下文,我不知道我的 viewModel 的具体类型是什么,但是,我有一个基本类型的 viewModel。
如何在不重新创建对象的情况下将 SomeClass<T>
转换为 SomeClass<BaseOfT>
?
我SomeClass
的签名是SomeClass<T> where T : BaseOfT
当使用 as
或隐式运算符时,它将导致运行时错误(或在 as
ofc 的情况下产生 null
)。
你不能。考虑以下示例,它显示了为什么“A
是 B
的子类型”并不意味着“T<A>
是 T<B>
的子类型”:
List<object> myListOfObjects = (List<object>)myListOfCats;
myListOfObjects.Add(new Dog());
但是,您可以在接口声明中创建 covariant interfaces by using the out
generic modifier:
ISomeInterface<BaseClassOfT> a = new SomeClass<T>();
我有一个上下文,我不知道我的 viewModel 的具体类型是什么,但是,我有一个基本类型的 viewModel。
如何在不重新创建对象的情况下将 SomeClass<T>
转换为 SomeClass<BaseOfT>
?
我SomeClass
的签名是SomeClass<T> where T : BaseOfT
当使用 as
或隐式运算符时,它将导致运行时错误(或在 as
ofc 的情况下产生 null
)。
你不能。考虑以下示例,它显示了为什么“A
是 B
的子类型”并不意味着“T<A>
是 T<B>
的子类型”:
List<object> myListOfObjects = (List<object>)myListOfCats;
myListOfObjects.Add(new Dog());
但是,您可以在接口声明中创建 covariant interfaces by using the out
generic modifier:
ISomeInterface<BaseClassOfT> a = new SomeClass<T>();