Если спросить, это может означать, что за этим может быть скрыт какой-то плохой дизайн. Это всегда происходит, когда вам нужна коллекция разнородных объектов.
Из-за незнания типа объектов, которые есть в коллекции, вам всегда нужно выполнять какую-то проверку типа, например if (dictionary["xy"] is string) {...}
, который является запахом кода.
Будет ли вариант какой-то упаковки в общий класс? Это позволило бы вам указать некоторые общие операции над ним (потому что вам, вероятно, понадобятся некоторые общие операции, если вам нужно, чтобы они были в том же режиме). Например что-то вроде (рассмотреть это как псевдокод):
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
или любой другой.