Comment puis-je exécuter un initialiseur statique méthode en C# avant la méthode main ()?

Donné une classe statique avec un initialiseur méthode:

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

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

Comment s'assurer de la initialiseur est exécuté avant Main()?

Du mieux que je peux penser à est de l'ajouter à Foo:

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

Ce travail, ou de malchance, mises en garde? Et est-il une meilleure manière de faire ceci?

Je ne suis pas sûr, mais il se pourrait que les domaines d'application pourrait résoudre votre problème. (msdn.microsoft.com/en-us/library/6s0z09xw.aspx)

OriginalL'auteur Matt | 2012-11-29