Во-первых, свойства не могут быть помечены только для чтения с ключевым словом readonly
. Они могут иметь только закрытые методы установки.
Во-вторых, не существует такой вещи, как «конструктор фигурных скобок». Это просто синтаксический сахар (ярлык) для набора операторов вроде этого:
Person p = new Person(); // standard parameterless constructor is called
p.FirstName = "Bob";
p.LastName = "Smith";
Обратите внимание, что вы также можете использовать конструктор с параметрами:
new Person(1, 2, 3) { FirstName = "Bob", LastName = "Smith" }
переводится как:
Person p = new Person(1, 2, 3);
p.FirstName = "Bob";
p.LastName = "Smith";
Относительно отражения: чтобы создать новый экземпляр и инициализировать его так же, как в примере new Person { FirstName = "Bob", LastName = "Smith" }
, вам необходимо:
- получить конструктор (см.
Type.GetConstructor
) и вызвать его или , использовать Activator.CreateInstance
для создания экземпляра типа,
- получить свойство
FirstName
(см. Type.GetProperty
),
- установить его (см.
PropertyInfo.SetValue
),
- повторите (2) и (3) для
LastName
.