Après beaucoup d'aide de tous mes frères StackOverFlow, j'ai réussi à créer une DLL C++ qui appelle mes classes C# via COM et transmet les données à une application externe. Il y avait beaucoup de célébration dans le royaume après que ce code a commencé à fonctionner.Comment faire pour conditionner la classe C# invoquer via COM dans ma DLL C++?
Maintenant, j'ai un nouveau problème. J'élargis la DLL pour qu'elle puisse appeler différentes classes (toutes implémentant la même interface). J'ai besoin de décider quelle classe appeler en fonction d'un tableau char passé à la DLL quand il est chargé. Les méthodes que j'appelle sont exactement les mêmes quelle que soit la classe que j'utilise. Quelle est la meilleure façon de basculer entre les classes lors de l'appel de la DLL?
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// I want to do something like this....but how?
if (strcmp(modelType, "Model1") == 0) {
IUnitModelPtr pIUnit(__uuidof(ClassOne));
}
if (strcmp(modelType, "Model2") == 0) {
IUnitModelPtr pIUnit(__uuidof(ClassTwo));
}
//call method 1
//call method 2
CoUninitialize();
//exit
Ceci est probablement une question assez simple, mais je ne connais vraiment pas de C++. Le simple fait de faire COM était un défi majeur pour moi.
edit: Je suis sûr qu'il existe des moyens super élégants pour y parvenir (réflexion?) Mais s'il vous plaît limiter vos suggestions à des choses qui peuvent être facilement implémentées ... l'efficacité n'est pas importante ici et la maintenabilité n'est pas vraiment un problème.
Merci, c'est exactement ce que je avais besoin. – Alex