Я хочу иметь Singleton, который будет автоматически создан при запуске программы.
То, что я подразумеваю под "автоматическим созданием экземпляров", заключается в том, что код в 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 будет иметь статический член, который представляет собой коллекцию PClasses ... и конструктор для добавления себя в коллекцию ...
Тогда в теории все синглеты будут автоматически добавлены в коллекцию (так как, когда они создаются, вызывается базовый конструктор PClass и добавляет новый объект в коллекцию) ... тогда коллекция может использоваться, ничего не зная о какие дочерние (одноэлементные) классы были реализованы, и новые дочерние (одноэлементные) классы могут быть добавлены в любое время без необходимости изменения какого-либо другого кода.
К сожалению, я не могу заставить детей (одиночек) создавать свои экземпляры ... испортить мой маленький план, в результате чего получается этот пост.
Надеюсь, я объяснил это достаточно хорошо.
PS. Да, я понимаю, что есть плохие чувства к синглетонам и их использованию ... но иногда они полезны, и даже если бы сам сатана делал синглтоны, я все равно хотел бы знать, можно ли решить мою проблему в C #. Спасибо всем вам.