给出以下示例 POCO 类:
public class TestClass
{
public int Id { get; init; }
public TestClass() {}
}
如何使用反射初始化
Id
属性?
结果应反映以下静态实例化:
TestClass _ = new TestClass() { Id = 1};
这与构造类的实例并设置属性相同。
init
是编译时辅助工具:它实际上不会改变类在运行时的工作方式。
var type = typeof(TestClass);
var instance = type.GetConstructor(BindingFlags.Public | BindingFlags.Instance, new Type[] { })
.Invoke(new object[] {});
type.GetProperty("Id").SetValue(instance, 1);