ILookup和Casting

时间:2015-07-27 17:29:37

标签: c# .net casting ilookup

我得到了以下物品:

class Base { }
class A : Base {}
class B : Base {}
class C : Base {}

enum BaseType
{
   A,
   B,
   C,
}

ILookup<BaseType, Base> lookup = GetBaseInformation();

GetBaseInformation方法返回一个按基类型分组的Base对象列表。有了这个,我想为每个BaseType设置一个单独的属性列表,我试着这样做:

IReadOnlyCollection<A> aTypes = lookup[BaseType.A] as IReadOnlyCollection<A>;
// returns null even if IGrouping<BaseType, A> is there

IReadOnlyCollection<A> aTypes = (IReadOnlyCollection<A>) lookup[BaseType.A];
> Cannot cast 'lookup[BaseType.A]' (which has an actual type 
> of 'System.Linq.Lookup<BaseType,Base>.Grouping') 
> to 'System.Collections.Generic.IReadOnlyCollection<A>'

IReadOnlyCollection<A> aTypes = lookup[BaseType.A].ToList().AsReadOnly()
// returns the list of objects

我做错了什么? 这样做的最佳方式是什么?

0 个答案:

没有答案