【发布时间】:2023-03-05 03:24:01
【问题描述】:
我想要一个在程序启动时自动实例化的单例。
我所说的“自动实例化”是指 Singleton 中的代码应该在程序启动时自行实例化,而不需要其他代码的任何调用或声明。
所以我想要类似下面的东西来实例化并在程序启动时写出“MySingleton Instantiated”(主代码不做任何事情)......
static class MySingleton
{
private static MySingleton self = new MySingleton();
protected MySingleton()
{
System.Console.WriteLine("MySingleton Instantiated");
}
}
除了这不起作用,因为 C# 只会在需要时初始化类的静态成员,即当它们被访问/等时。
那我该怎么办?这个可以吗?
我没有亲自用 C++ 做过这件事(有一段时间没用过 C++),但我很确定它可以用 C++ 完成,但不确定 C#。
感谢任何帮助。谢谢。
我真正想做的是... 会有很多这样的单例类(随着时间的推移可以添加更多),所有这些都将继承自一个通用(抽象)父类(又名 PClass)。
PClass 将有一个静态成员,它是 PClass 的集合...和一个将自身添加到集合中的构造函数...
然后理论上所有的单例将自动添加到集合中(因为当它们被实例化时,基 PClass 构造函数被调用并将新对象添加到集合中)......然后可以在不了解任何信息的情况下使用集合已经实现了哪些子(单例)类,并且可以随时添加新的子(单例)类,而无需更改任何其他代码。
不幸的是,我无法让孩子(单身人士)实例化自己...搞砸了我的小计划,导致了这篇文章。
希望我解释得足够好。
附言。是的,我意识到对单例及其使用有不好的感觉......但它们有时很有用,即使撒旦自己制作了单例,我仍然想知道我的问题是否可以在 C# 中解决。谢谢大家。
【问题讨论】: