如何使用反射初始化属性?

问题描述 投票:0回答:1

给出以下示例 POCO 类:

public class TestClass
{
  public int Id { get; init; }

  public TestClass() {}
}

如何使用反射初始化

Id
属性?

结果应反映以下静态实例化:

TestClass _ = new TestClass() { Id = 1};
c# system.reflection object-initializers
1个回答
0
投票

这与构造类的实例并设置属性相同。

init
是编译时辅助工具:它实际上不会改变类在运行时的工作方式。

    var type = typeof(TestClass);
    var instance = type.GetConstructor(BindingFlags.Public | BindingFlags.Instance, new Type[] { })
        .Invoke(new object[] {});
    type.GetProperty("Id").SetValue(instance, 1);
© www.soinside.com 2019 - 2024. All rights reserved.