Наверное, просто, но не мог понять. Я загружаю сборку во время выполнения и просматриваю некоторые классы и создаю элементы управления ввода для своих свойств. Чтобы создать экземпляр объекта во время выполнения, я использую:Как создать тип значения или объект типа строки во время выполнения с использованием Reflection
object o = PropertyType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, Type.EmptyTypes,null).Invoke(null);
и он отлично подходит для классов. Когда тип является массивом, я использую
object o = PropertyType.Type.GetConstructor(new Type[] { typeof(int) }).Invoke(new object[] { 0 });
который также отлично работает. Но когда дело доходит до типа строк или типов значений GetConstructor.Invoke не работает. Я также попробовал Activator.CreateInstance, который также не работал.
Спасибо, Джон, я отредактировал мой вопрос, не хотел сказать, что строка - это тип значения ... Итак, как насчет создания строки? –
@Erkan: Я отредактировал свой ответ. Какую строку вы хотите создать?Если вы выберете конструктор, который на самом деле существует, вы можете, конечно, вызвать его с отражением - но, конечно, вам нужно будет указать значения для параметров ... –
просто хотите создать динамическое свойство класса, которое имеет тип string, но Я не хочу нулевого значения в созданном объекте. Поэтому, я думаю, мне нужно сделать специальный случай для свойств типа строки в классе. Однако неясно, как создать экземпляр объекта из свойства класса string. Поскольку я буду делать специальный случай: if (property.PropertyType == typeof (string)) object o = ""; быть достаточным? –