title: Static classes that require "Initialize" method to be called prior use - Is it ok?
body: <p>In my project I have multiple "service" static classes that should be easily accessible across the project, and thus they are static. However, to to initialize them, I have to pass them data that is only available during start-time, which results in code similar to this:</p>
  
  <pre><code>public static class VisualStudioEvents
  {
      private static Data _data;
  
      public static void Initialize(Data data)
      {
          _data = data;
      }
  
      public static void Func()
      {
          AssertInitialized(_data);
  
          // Code of actual Func() goes here.
      }
  }
  </code></pre>
  
  <p>What do you think about that? Is there a different design patter that should be applied here? Or is this design acceptable?</p>
  
  <p>Thanks!</p>