Bonjour;
je suis en train de créer une DLL DotNet [C#] et je voudrais savoir si on peut y définir un code automatiquement exécuté au chargement de la DLL (une sorte de constructeur de classe.
merci
Version imprimable
Bonjour;
je suis en train de créer une DLL DotNet [C#] et je voudrais savoir si on peut y définir un code automatiquement exécuté au chargement de la DLL (une sorte de constructeur de classe.
merci
hein ? :koi:
Une assembly (ne pas confondre avec les DLL) peut être exécutable ou pas, cela dépend si un point d'entrée est défini (Main), mais à part ça, je ne vois pas de quoi tu veux parler...
Une assembly sans point d'entrée n'est une qu'une simple bibliothèque de classes, et chaque classe possède ou non un constructeur.
Une DLL, c'est une (ou plusieurs) classes donc rien ne t'empêche d'avoir un (ou plusieurs) constructeurs et donc, de mettre du code dedans.
Les dll windows possèdent une méthode DllMain qui est appelée lors du chargement de la dll en question, mais je ne pense pas que ça existe en .Net. C'est à dire qu'une assembly étant une dll windows je suppose qu'elle a bien une méthode DllMain (c'est à vérifier) mais que celle-ci n'est pas accessible/modifiable en .Net.
Dans la même idée une autre différence entre .Net et C++ c'est que les variables static ne sont éventuellement initialisées en .Net que lorsque le code est utilisé, alors qu'en C++ on a la garantie que ces variables seront initialisées, que la variable soit utilisée ou pas. C'est assez génant lorsqu'on veut faire des choses comme des "abstract factory" et qu'on a besoin d'enregistrer des classes auprés d'autres classes dés le chargement...
EDIT: aprés une petite recherche il semblerait que les dll .net ne sont pas des dll windows (elles n'ont pas le format d'une dll windows native) et que donc elle ne contiendrait même pas de fonction DllMain du tout.