Использование отражения для создания объекта, представленного содержимым объекта «Тип» - PullRequest
2 голосов
/ 10 февраля 2012

Я использую отражение, чтобы найти тип по строке, подобной этой ...

Type currentType = Type.GetType(typeName);

Затем я могу получить список свойств для этого типа, как этот ...

var props = currentType.GetProperties();

Как создать экземпляр нового объекта этого типа, а затем начать присваивать значения свойствам этого объекта на основе списка свойств в списке свойств?

Ответы [ 2 ]

4 голосов
/ 10 февраля 2012

Используя значения, которые у вас уже есть ...

var created = Activator.CreateInstance(currentType);

foreach(var prop in props)
{
    prop.SetValue(created, YOUR_PROPERTY_VALUE, null);
}
1 голос
/ 10 февраля 2012

Создание экземпляра currentType с:

var newInst = Activator.CreateInstance(currentType);

и присвойте значения свойств с помощью:

propInfo.SetValue(newInst, propValue, BindingFlags.SetProperty, null, null, null);

Где propInfo - это экземпляр PropertyInfo из вашего props, а propValue - объект, который вы хотите присвоить свойству.

EDIT:

Я всегда склоняюсь к использованию более многословной перегрузки SetValue, поскольку в прошлом у меня были проблемы с короткой перегрузкой, но propInfo.SetValue(newInst, propValue, null); также может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...