Словарь, содержащий блокирующие коллекции разных типов без приведения
Могу ли я установить словарь MyDict<Type, BlockingCollection<"differentTypes">
возможно, через интерфейс, который обходит любое преобразование, предотвращая использование объектов или динамических типов?
Причина, по которой я хочу использовать это, заключается в том, что я хочу инициализировать блокирующие коллекции разных типов во время выполнения, потому что входящие объекты имеют разные типы, и затем я хочу добавить такие входящие объекты в тип, соответствующий блокирующей коллекции. Я также хочу получить доступ к объектам внутри Blocking Collection позже без необходимости приведения. Необходимые типы коллекции Blocking известны во время создания экземпляра класса упаковки. Типы входящего объекта известны только во время выполнения. Типы входящих объектов никогда не будут отличаться от типов, известных во время создания класса. Типы объектов, которые я хочу получить из соответствующей коллекции Blocking Collection, также известны только во время выполнения. Любой способ установить это без необходимости кастовать?
Я просмотрел много связанных вопросов, но не нашел точно такие же характеристики, описанные здесь.
1 ответ
В конечном счете, "разные типы" означает либо object
или общий базовый класс / интерфейс. Если эти типы являются типами-значениями, то они должны быть упакованы и распакованы (хотя вы указываете, что это объекты класса, так что это не применяется - только struct
s когда-либо в штучной упаковке / без коробки). Так что остается несколько забросов - забрасывание происходит довольно быстро: меня это не слишком беспокоит.
Конечно, если есть некоторая общность между "differentTypes" (некоторый общий интерфейс и т. Д.), То вы можете использовать этот общий интерфейс без приведения.