gpt4 book ai didi

c# - 在构造函数之前设置字段或属性值

转载 作者:太空狗 更新时间:2023-10-29 22:36:11 24 4
gpt4 key购买 nike

是否可以在类的构造函数之前为字段或属性赋值并使用反射?

谢谢

最佳答案

是的,有一种偷偷摸摸的方法可以做到这一点。秘诀是FormatterServices.GetUninitializedObject它将分配一个实例但不运行构造函数。您可以通过反射设置字段和属性,然后运行构造函数。

一个简单的例子:

class Program
{
static void Main(string[] args)
{
object obj = FormatterServices.GetUninitializedObject(typeof(A));
obj.GetType().GetProperty("I").SetValue(obj, 1);
obj.GetType().GetConstructor(Type.EmptyTypes).Invoke(obj, null);
Console.WriteLine("Done");
}
}

class A
{
public A()
{
if (I != 0)
{
Console.WriteLine("Who set me? I = {0}", I);
}
}

public int I { get; set; }
}

关于c# - 在构造函数之前设置字段或属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40700550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com