gpt4 book ai didi

c# - 如何通过反射从单例类中获取实例

转载 作者:太空狗 更新时间:2023-10-29 22:32:48 28 4
gpt4 key购买 nike

考虑这段代码:

public class Test
{
private static readonly Lazy<Test> Lazy = new Lazy<Test>(() => new Test());

private Test()
{
Console.WriteLine("Calling constractor");
}

public static Test Instance
{
get { return Lazy.Value; }
}

public void Something()
{
}
}

当我想从上面的类创建实例时,我们应该将构造函数的访问修饰符更改为 public,为了从此类获取实例,我编写了以下代码:

  Type type = typeof(Test);
IEnumerable<Type> types = AppDomain.CurrentDomain.GetAssemblies().ToList()
.SelectMany(s => s.GetTypes())
.Where(type.IsAssignableFrom);
Type strtegy = types.FirstOrDefault(x => x.IsClass);
for (int i = 0; i < 10; i++)
{
Activator.CreateInstance(strtegy);
}

如果使用这段代码,每次调用Activator.CreateInstance 构造函数都应该调用。所以我们有很多类的实例。

如何通过反射从单例类中获取实例?

最佳答案

要创建实例,请执行与在代码中执行的操作相同的操作——获取 Instance 的值:

var singleton = typeof(Test).GetProperty("Instance").GetValue(null);

关于c# - 如何通过反射从单例类中获取实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828039/

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