Salut,
le seul problème dans ta solution est qu'AUCUNE partie de ton code ne pourra être exécuté sur une plateforme non managé.
Par exemple un programme en pur C/win32 APIs, ne pourra pas utiliser ta DLL puisqu'elle contient des référence au .net.
Isoler des DLL non managées est ce que fait Microsoft.
Puis avec 1 wrapper en p/invoke en dehors de la dll, celle-ci peut s'exécuter avec tous les langages managés.
Une autre solution permet de faire une DLL en C# UNIQUEMENT puis de l'utiliser depuis du code natif c/c++ via le chargement du runtime .net depuis l'applicatif avec des appels COM
Voir ceci pour charger le runtime et utiliser une dll C# managée :
ICLRRuntimeHost *pClrHost;
ICLRMetaHost *lpMetaHost;
CLRCreateInstance(
CLSID_CLRMetaHost,
IID_PPV_ARGS(&lpMetaHost));
ICLRRuntimeInfo *lpRuntimeInfo;
/* Framework 4 */
lpMetaHost->GetRuntime(
L"v4.0.30319",
IID_PPV_ARGS(&lpRuntimeInfo));
lpRuntimeInfo->GetInterface( //ect...
pClrHost->ExecuteInDefaultAppDomain( //ect...
//puis
pClrHost->Stop();
pClrHost->Release();
bye...