0

我得到了以下对象:

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

enum BaseType
{
   A,
   B,
   C,
}

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

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

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

我究竟做错了什么?做这个的最好方式是什么?

4

0 回答 0