惰性初始化类型没有 public 无参数构造函数
the lazily-initialize type does not have a public parameter-less constructor
我正在尝试在 youtube 中实现 example,导师做对了,但我遇到了错误。
我已经有一个私有构造函数,我的代码中不能有 public 构造函数。
private static int _InstanceCount = 0;
private SingletonDemo1()
{
_InstanceCount++;
Console.WriteLine("Instance Count: " + _InstanceCount.ToString());
}
private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>();
public static SingletonDemo1 Instance
{
get
{
return _Instance.Value;
}
}
根据示例,您需要像演示视频中那样在 Lazy 的构造函数中手动初始化对象
private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>(() => new SingletonDemo1());
注意使用的工厂函数。
没有它,代码将尝试使用反射来初始化对象,但正如您已经声明的那样,构造函数是私有的,因此它将失败。这就是为什么您需要告诉 Lazy
如何在需要时创建实例。
我正在尝试在 youtube 中实现 example,导师做对了,但我遇到了错误。
我已经有一个私有构造函数,我的代码中不能有 public 构造函数。
private static int _InstanceCount = 0;
private SingletonDemo1()
{
_InstanceCount++;
Console.WriteLine("Instance Count: " + _InstanceCount.ToString());
}
private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>();
public static SingletonDemo1 Instance
{
get
{
return _Instance.Value;
}
}
根据示例,您需要像演示视频中那样在 Lazy 的构造函数中手动初始化对象
private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>(() => new SingletonDemo1());
注意使用的工厂函数。
没有它,代码将尝试使用反射来初始化对象,但正如您已经声明的那样,构造函数是私有的,因此它将失败。这就是为什么您需要告诉 Lazy
如何在需要时创建实例。