C# образец создания словаря int
для типа.
Используемые методы:
Проблема в основном, чтобы выразить полученный тип в некоторой степени тип-безопасным способом. В случае Dictionary
можно обратиться к IDictionary
или продолжать использовать отражение для управления объектами.
Это также может быть возможным, чтобы каким-то образом выразить большинство манипуляций с обобщенным кодом, который вызывается более отражения с MakeGenericMethod
Пример:
var myType = typeof(Guid); // some type
// get type of future dictionary
Type generic = typeof(Dictionary<,>);
Type[] typeArgs = { typeof(int), myType };
var concrete = generic.MakeGenericType(typeArgs);
// get and call constructor
var constructor = concrete.GetConstructor(new Type[0]);
var dictionary = (IDictionary)constructor.Invoke(new object[0]);
// use non-generic version of interface to add items
dictionary.Add(5, new Guid());
Console.Write(dictionary[5]);
// trying to add item of wrong type will obviously fail
// dictionary.Add(6, "test");
[MakeGenericType] (http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx)? –
@AlexeiLevenkov Как мне добавить слова в словарь? Он никогда не создает словарь, а только тип. – AngryHacker
Вы получаете тип, чем конструктор вызовов, чем добавляете элементы (к сожалению, я понятия не имею, как выразить это в VB.Net, я могу дать образец C#) ... Но я надеюсь, что кто-то может предложить более разумное решение. В C# тоже будет проблема с выражением результирующего типа в коде (я думаю, что «IDictionary» может быть единственным вариантом) - не уверен в VB.Net. –