После большой помощи от всех моих братьев StackOverFlow мне удалось создать C ++ DLL, которая вызывает мои классы C # через COM и передает данные назад и вперед во внешнее приложение. После того, как этот кодекс начал работать, в королевстве было много праздников.
Теперь у меня новая проблема. Я расширяю DLL, чтобы она могла вызывать разные классы (все реализующие один и тот же интерфейс). Мне нужно решить, какой класс вызывать в зависимости от массива char, передаваемого в DLL при загрузке. Методы, которые я вызываю, абсолютно одинаковы, независимо от того, какой класс я использую. Каков наилучший способ переключения между классами при вызове 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
Это, наверное, довольно простой вопрос, но я действительно не знаю никакого C ++. Просто запуск COM стал для меня серьезной проблемой.
edit: Я уверен, что есть некоторые очень изящные способы достичь этого (размышления?), Но, пожалуйста, ограничьте свои предложения вещами, которые можно легко реализовать ... эффективность здесь не важна, а ремонтопригодность на самом деле не проблема.