У меня есть 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>);
}
У кого-нибудь есть лучший способ сделать это?
Образец кода будет очень полезен. Без этого трудно дать вам что-нибудь вроде полезного ответа. –