Tüm StackOverFlow kardeşlerimden çok yardım ettikten sonra C# sınıflarımı COM aracılığıyla çağıran ve verileri harici bir uygulamaya geri ileten bir C++ DLL oluşturmayı başardım. Bu kod çalışmaya başladıktan sonra krallıkta çok fazla kutlama yapıldı.C++ sınıfımda COM aracılığıyla çağırdığım C# sınıfını koşullu olarak nasıl seçmeliyim?
Şimdi yeni bir sorunum var. DLL'yi genişletiyorum, böylece farklı sınıfları (hepsi aynı arayüzü uygulayarak) çağırabilir. Yüklendiğinde DLL'ye iletilen bir char dizisine bağlı olarak hangi sınıfın çağrılacağına karar vermem gerekiyor. Kullandığım yöntemler, kullandığım sınıftan bağımsız olarak tamamen aynıdır. DLL'yi çağırırken sınıflar arasında geçiş yapmanın en iyi yolu nedir?
// 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
Bu, muhtemelen oldukça basit bir sorudur, ancak gerçekten C++ bilmiyorum. Sadece COM’u kullanmak benim için büyük bir zorluktu.
düzenleme: Bunu başarmak için bazı süper zarif yollar olduğundan eminim (yansıma?) Ama lütfen önerilerinizi kolayca uygulanabilecek bir şeyle sınırlayın .... verimlilik burada önemli değildir ve bakımın yapılması gerçekten bir sorun değildir. Böyle
sayesinde bu tam olarak ne gerekli olduğunu. – Alex