Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Etkin Şablon Kitaplığı (ATL) desteklenmeye devam eder. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
Çift arabirimin avantajlarını (yani hem vtable hem de geç bağlama esnekliğini) birden çok devralma tekniğiyle birleştirmek ve böylece sınıfı betik dillerinin yanı sıra C++'lar için kullanılabilir hale getirmek isteyebilirsiniz.
Tek bir COM nesnesinde birden çok çift arabirimi kullanıma sunma mümkün olsa da, önerilmez. Birden çok çift arabirim varsa, yalnızca bir IDispatch arabirim gösterilmelidir. Bu durumun söz konusu olduğundan emin olmak için kullanılabilen teknikler, işlev kaybı veya artan kod karmaşıklığı gibi cezalar taşır. Bu yaklaşımı dikkate alan geliştiricinin avantajları ve dezavantajları dikkatle tartması gerekir.
Tek Bir IDispatch Arabirimini Ortaya Çıkarma
öğesinin iki veya daha fazla uzmanlığından IDispatchImpltüretilerek tek bir nesne üzerinde birden çok çift arabirim kullanıma sunma mümkündür. Ancak, istemcilerin IDispatch arabirimi sorgulamasına izin verirseniz, uygulaması için hangi temel sınıfın kullanılacağını belirtmek için COM_INTERFACE_ENTRY2 makrosunu (veya IDispatch)) kullanmanız gerekir.
COM_INTERFACE_ENTRY2(IDispatch, IMyDualInterface)
Yalnızca bir IDispatch arabirim kullanıma sunulduğundan, nesnelerinize yalnızca arabirim üzerinden IDispatch erişebilen istemciler diğer arabirimlerdeki yöntemlere veya özelliklere erişemez.
Birden Çok İkili Arabirimi Tek Bir IDispatch Uygulamasında Birleştirme
ATL, birden çok çift arabirimi tek bir uygulamasında IDispatchbirleştirmek için herhangi bir destek sağlamaz. Ancak, arabirimleri el ile birleştirmeye yönelik, ayrı IDispatch arabirimlerin birleşimini içeren şablonlu bir sınıf oluşturma, işlevi gerçekleştirmek QueryInterface için yeni bir nesne oluşturma veya arabirimi oluşturmak IDispatch için iç içe nesnelerin typeinfo tabanlı bir uygulamasını kullanma gibi birçok bilinen yaklaşım vardır.
Bu yaklaşımlarda olası ad alanı çakışmalarının yanı sıra kod karmaşıklığı ve bakım sorunları vardır. Birden çok çift arabirim oluşturmanız önerilmez.