Ответ 1
Предположим, я напишу
Handle(_commands.ToDictionary(p => p.Key, p => (object)p.Value));
Не самая эффективная вещь в мире, но до тех пор, пока не произойдет ковариация, что перерывы.
Есть ли быстрый способ конвертировать общий словарь из одного типа в другой?
У меня есть это
IDictionary<string, string> _commands;
и нужно передать его функции, которая использует немного другой типизированный словарь
public void Handle(IDictionary<string, Object> _commands);
Предположим, я напишу
Handle(_commands.ToDictionary(p => p.Key, p => (object)p.Value));
Не самая эффективная вещь в мире, но до тех пор, пока не произойдет ковариация, что перерывы.
возможно, эта функция может быть полезна для вас
IEnumerable<KeyValuePair<string, object>> Convert(IDictionary<string, string> dic) {
foreach(var item in dic) {
yield return new KeyValuePair<string, object>(item.Key, item.Value);
}
}
И вы назовете это так:
Handle(Convert(_commands));
может что-то подобное делать?
Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1, "One");
dict.Add(2, "Two");
dict.Add(3, "Three");
dict.Add(4, "Four");
dict.Add(5, "Five");
object dictObj = (object)dict;
IDictionary temp = (IDictionary)dictObj;
Dictionary<int, object> objs = new Dictionary<int, object>();
foreach (DictionaryEntry de in temp)
{
objs.Add((int)de.Key, (object)de.Value);
}
Не можете ли вы использовать
Dim myDictionary AS New Dictionary(Of Object, Object)
Тогда он сможет принимать любые типы