I have an older app (ca. 2005) which accepts dll plugins. The app was originally designed for Win32 C plugins, but I have a working C# dll template. My problem: I need to do some one-time initialization, which in a Win32 C dll would be done in DllMain:
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
[one-time stuff here...]
}
Is there a C# equivalent of this? There is no “DllMain” in the C# template I have. I tried a literal C# interpretation, but no go: the dll works but it won’t trigger the DllMain function.
public static bool DllMain(int hModule, int reason, IntPtr lpReserved) {
[one time stuff here...]
}
Give your class a static constructor and do your initialization there. It will run the first time anybody calls a static method or property of your class or constructs an instance of your class.