C# Сопоставляет универсальные типы на основе параметра типа

#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; вместо a Listlt;IGenericBgt; . Или a Lookup , если для каждого типа может быть несколько записей списка.