我得到了以下对象:
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
我究竟做错了什么?做这个的最好方式是什么?