我得到了以下物品:
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
我做错了什么? 这样做的最佳方式是什么?