Я пытаюсь динамически создать универсальный словарь на основе типа свойства в следующем классе:
public class StatsModel
{
public Dictionary<string, int> Stats { get; set; }
}
Предположим, что System.Type свойства Stats назначен переменной 'propertyTypeи что метод IsGenericDictionary возвращает true, если тип является универсальным словарем.Затем я использую Activator.CreateInstance для динамического создания экземпляра универсального словаря того же типа:
// Note: property is a System.Reflection.PropertyInfo
Type propertyType = property.PropertyType;
if (IsGenericDictionary(propertyType))
{
object dictionary = Activator.CreateInstance(propertyType);
}
Поскольку я уже знаю, что создаваемый объект является универсальным словарем, я хотел бы привести его к универсальному словарю.чьи аргументы типа совпадают с общими аргументами типа свойства:
Type[] genericArguments = propertyType.GetGenericArguments();
// genericArguments contains two Types: System.String and System.Int32
Dictionary<?, ?> = (Dictionary<?, ?>)Activator.CreateInstance(propertyType);
Возможно ли это?