#c# #.net #visual-studio
#c# #.net #visual-studio
Вопрос:
Проведение этих занятий:
abstract class Resource {} interface IGenericA{} interface IGenericB {} class GenericAlt;Tgt; : IGenericA where T : Resource {} class GenericBlt;Tgt; : IGenericB where T : Resource {}
И эти коллекции:
Listlt;IGenericAgt; collectionA; Listlt;IGenericBgt; collectionB;
Мой вопрос таков:
Есть ли способ получить объект collectionA
и выполнить поиск объекта , в collectionB
котором есть тот же параметр универсального типа?
И 2-й: есть ли лучший способ сделать это?
Комментарии:
1. Объекты в списке даже не обязательно имеют параметр типа. У него могло не быть ни одного, а могло быть и пять. Если экземпляры этих интерфейсов необходимо связать с типом, сами интерфейсы должны быть универсальными.
2. Я только что понял, что могу создать свойство типа Type, которое возвращает тип универсального параметра T, и сравнить оба, чтобы проверить, совпадают ли они.
3. Это сбивает с толку , что
collectionA
такоеListlt;ICollectionAgt;
, то есть, список коллекций . Возможно ли, чтоICollectionItemA
это было бы более подходящее название для этого интерфейса?4. @Heinzi да, вы абсолютно правы, я изменил его
5. » есть ли лучший способ сделать это? «Для эффективного поиска вы можете использовать a
Dictionarylt;Type, IGenericBgt;
вместо aListlt;IGenericBgt;
. Или aLookup
, если для каждого типа может быть несколько записей списка.