返回信息流定义了collection<T>类,想把collection<B> 强制转换成 collection<A>, 其中B是继承A的,怎么才能转换?
具体程序是先用反射得到了Object result,
Object results = info.GetValue(Obj, null);
得到的这个results实质可能的类型是collection<B>,collection<C>,collection<D>, B,C,D都是继承A的,我想把这个results直接转换成 collection<A>,
我就collection<A> Results =(collection<A>)results;
但总是报错说不能转换,想知道怎样才能实现转换
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3448同步于 2011/11/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
【求助】C# 泛型的强制类型转换
rainbowTT
2011/11/3镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
遍历collection 逐个元素转换,比如:
foreach(var item in collectionB)
{
collectionA.Add(item); //B继承A,隐式转换。
}
用LINQ,一行代码搞定
using System.LINQ;
collectionB.ForEach(n => collectionA.Add(n));
【 在 snowleaves 的大作中提到: 】
: 这不行的吧
: 创建collection<A> 实例 然后遍历collection<B>的元素丢进去?
: --
: ...................
但是collection<B>是由反射获得的,是个object,它也可能collection<C>或collection<D>,怎么遍历呢?
object转成A类型,然后插入collectionA
【 在 rainbowTT 的大作中提到: 】
: : 这不行的吧
: : 创建collection<A> 实例 然后遍历collection<B>的元素丢进去?
: : --
: ...................