У меня есть статический класс со статическим конструктором, который занимает некоторое время (10-15 секунд), чтобы выполнить и полностью инициализировать класс. Чтобы повысить производительность, я решил включить этот статический класс в явную инициализацию вместо того, когда он сначала понадобится, чтобы он был готов к работе, когда он действительно должен использоваться.
Моя первая мысль заключалась в создании метода Initialize()
для класса, но поскольку у меня уже есть статический конструктор, этот метод, похоже, не должен делать ничего, кроме метода, чтобы вызвать явное инициализацию класса без доступа к каким-либо другим общедоступным методам или свойствам. Мне кажется, что метод, который ничего не делает, прямо мне не подходит.
Затем я подумал, что могу просто переместить код из статического конструктора в этот метод Initialize()
, но мне также хотелось бы, чтобы класс был инициализирован, когда он сначала нужен, и метод Initialize()
не был явно вызван.
Подводя итог, хочу отметить следующие критерии:
- Я хочу, чтобы статический класс был явно инициализирован (вероятно, используя общедоступный метод
Initialize()
). - Я не хочу иметь доступ к каким-либо другим общедоступным методам или свойствам класса, когда они мне не нужны, даже если это будет инициализировать статический класс.
- Если класс не был явно инициализирован, я все же хочу инициализировать его, когда он сначала необходим (т.е. при доступе к другим общедоступным методам или свойствам с целью использования функциональных возможностей или данных, которые они предоставляют).
- Это вспомогательный класс, и использование шаблона проектирования Singleton для моих целей необязательно.
Каким будет правильный способ соблюдения вышеуказанных критериев для статического класса, написанного на С#? Это может также относиться к другим языкам программирования (например, Java), но лично меня интересует решение, написанное на С#.