Como posso executar um método de inicialização estática em c # antes do método Main ()?

Dada uma classe estática com um método inicializador:

public static class Foo
{
    // Class members...

    internal static init()
    {
        // Do some initialization...
    }
}

Como posso garantir que o inicializador seja executado antesMain()?

O melhor que posso pensar é adicionar isso aFoo:

    private class Initializer
    {
        private static bool isDone = false;
        public Initializer()
        {
            if (!isDone)
            {
                init();
                isDone = true;
            }
        }
    }
    private static readonly Initializer initializer = new Initializer();

Isso funcionará ou haverá algumas advertências imprevistas? E há alguma maneira melhor de fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion