У меня есть IList<DerivedClass>
, который я хочу привести к ICollection<BaseClass>
, но когда я пытаюсь выполнить явное приведение, я получаю null
. Возможно ли это сделать без создания и заполнения новой коллекции?
Edit:
Поскольку я хочу только читать из коллекции, я переключился на общий метод:
public void PopulateList<BaseClass>(ICollection<T> collection)
Тогда я могу передать это IList<DerivedClass>
. Есть ли хороший способ для кэширования этого списка, чтобы я мог обновить его, когда мне нужно. Мое первое желание - использовать:
Object cachedCollection;
Type cachedType;
public void PopulateList<BaseClass>(ICollection<T> collection) {
cachedCollection = collection;
cachedType = T;
// other stuff...
}
private void Refresh() {
PopulateList<cachedType>(cachedCollection as ICollection<cachedType>);
}
У кого-нибудь есть лучший способ сделать это?