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
Vous devez vous connecter pour publier un commentaire.
Simplement effectuer l'initialisation à l'intérieur d'un constructeur statique pour
Foo
.À partir de la documentation:
OriginalL'auteur Jon
Il y a constructeurs statiques en C# que vous pouvez utiliser.
OriginalL'auteur João Simões
Déplacer votre code à partir d'un
internal static
méthode à unstatique
constructeur comme ceci:Cette façon, vous êtes tout à fait sûr que le constructeur statique sera exécuté sur la première mention de votre
Foo
classe, qu'est la construction d'une instance ou d'accès à un membre statique.OriginalL'auteur SWeko