定义了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;
但总是报错说不能转换,想知道怎样才能实现转换
具体程序是先用反射得到了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;
但总是报错说不能转换,想知道怎样才能实现转换
var collection = new Collection<A>( );
foreach (var o in results)
{
collection.Add(o);
}
lst.Add(new B());
当然如果是net4,协/逆变是直接支持滴,可以直接转换net4以下,可以cast方法,或者自己foreach转换
但是results是通过反射获得的,是个object,怎么遍历呢?
自定义的话,转不了
如果是集合类的话, List<testB> b = new List<testB>(); List<testA> a = (List<testA>)(IEnumerable<testB>)b;