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.
Not
Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.
nonComVisibleBaseClass Yönetilen hata ayıklama yardımcısı (MDA), COM görünür olmayan bir QueryInterface temel sınıftan türetilen COM görünür yönetilen sınıfının COM çağrılabilen sarmalayıcı (CCW) üzerindeki yerel veya yönetilmeyen kod tarafından çağrı yapıldığında etkinleştirilir. Çağrı, QueryInterface MDA'nın yalnızca çağrının sınıf arabirimini veya COM görünür yönetilen sınıfının varsayılanını IDispatch istediği durumlarda etkinleştirilmesine neden olur. MDA, özniteliği uygulanmış olan ve COM-visible sınıfı tarafından açıkça uygulanan açık bir arabirim ClassInterfaceAttribute için olduğunda QueryInterface etkinleştirilmez.
Belirtiler
QueryInterface COR_E_INVALIDOPERATION HRESULT ile başarısız olan yerel koddan yapılan çağrı. HRESULT, çalışma zamanının bu MDA'nın etkinleştirilmesine neden olacak çağrılara izin QueryInterface vermemesinden kaynaklanıyor olabilir.
Neden
Çalışma zamanı, olası sürüm oluşturma sorunları nedeniyle COM görünür olmayan bir sınıftan türetilen COM görünür sınıfının sınıf arabirimi veya varsayılan IDispatch arabirimi için çağrılara izin QueryInterface veremez. Örneğin, com-visible olmayan temel sınıfa herhangi bir genel üye eklendiyse, türetilmiş sınıfı kullanan mevcut COM istemcileri, temel sınıf üyelerini içeren türetilmiş sınıfın vtable'ı böyle bir değişiklikle değiştirileceğinden, potansiyel olarak bozulabilir. COM'a sunulan açık arabirimler, vtable'da arabirimlerin temel üyelerini içermediğinden bu soruna sahip değildir.
Çözüm
Sınıf arabirimini kullanıma sunma. Açık bir arabirim tanımlayın ve özniteliğini ClassInterfaceAttribute uygulayın.
Çalışma Zamanı üzerindeki etkisi
Bu MDA'nın CLR üzerinde hiçbir etkisi yoktur.
Çıktı
Aşağıda, COM tarafından görünür olmayan bir QueryInterface sınıftan türetilen COM görünür sınıfındaki Derived bir çağrı için örnek bir ileti verilmiştir Base.
A QueryInterface call was made requesting the class interface of COM
visible managed class 'Derived'. However since this class derives from
non COM visible class 'Base', the QueryInterface call will fail. This
is done to prevent the non COM visible base class from being
constrained by the COM versioning rules.
Yapılandırma
<mdaConfig>
<assistants>
<nonComVisibleBaseClass />
</assistants>
</mdaConfig>