Просить это может означать, могут быть некоторые плохой дизайн скрыты за этим. Это всегда происходит, когда вам нужна коллекция гетерогенных объектов.
Из-за незнания типа объектов, которые у вас есть в коллекции, вам всегда нужно выполнить некоторую проверку типов, например if (dictionary["xy"] is string) {...}
, которая является запахом кода.
Возможно ли какая-либо упаковка в общий класс? Это позволит вам указать некоторые общие операции над ним (потому что вам, вероятно, нужны некоторые общие операции, если вам нужно, чтобы они находились в одном и том же dict). Например, что-то вроде (рассмотрим его как псевдокод):
class Base
{
bool IsCollection;
}
class StringItem : Base
{
string Contents;
IsCollection = false;
override ToString() { return this.Contents; }
}
class ListItem : Base
{
List<StringItem> Contents;
IsCollection = true;
override ToString() { return string.Join(",", this.Contents.ToArray() }
}
Тогда вы могли бы иметь Dictionary<string, Base>
и использовать операции, определенные на базе таких как ToString
или любого обычая.
'Словарь <строка, объект>' с приложением, чтобы получить его? Могут иметь последствия для бокса, если вы собираетесь использовать типы значений. –
Что такое боксерские последствия? Большая часть '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –
@ThomasClayson: Ни 'string', ни' List '- тип значения, поэтому никакого бокса не будет. (Сделайте несколько поисков, чтобы узнать больше о боксе, если вы не знаете об этом ...) –