RCW'yi bir InterfaceIsIInspectable arabirime atama PlatformNotSupportedException oluşturur

Artık olarak InterfaceIsIInspectable işaretlenmiş bir arabirime çalışma zamanı çağrılabilen sarmalayıcı (RCW) ataması bir PlatformNotSupportedExceptionoluşturur. Bu değişiklik, .NET'ten WinRT desteğinin kaldırılmasına ilişkin bir izlemedir.

Sürüm kullanıma sunulmuştur

.NET 5

Açıklama değiştirildi

Önceki .NET sürümlerinde, RCW'yi beklendiği gibi çalıştı olarak InterfaceIsIInspectable işaretlenmiş bir arabirime atama. .NET 5'te başlayarak RCW'yi olarak InterfaceIsIInspectable işaretlenmiş bir arabirime atama, yayın zamanında bir PlatformNotSupportedException oluşturur.

Değişiklik nedeni

desteği InterfaceIsIInspectablekaldırıldı. Çalışma zamanında temel alınan destek artık mevcut olmadığından, oluşturma PlatformNotSupportedException , düzgün bir hata yolunu etkinleştirir. Özel durum oluşturma, bu özelliğin artık desteklenmemesini daha kolay bulunabilir hale getirir.

  • Arabirimi bir Windows çalışma zamanı meta verileri (WinMD) dosyasında tanımlayabilirseniz bunun yerine C#/WinRT aracını kullanın.

  • Aksi takdirde, arabirimi yerine InterfaceIsIInspectableolarak InterfaceIsIUnknown işaretleyin ve yöntemlerin InterfaceIsIInspectable arabiriminin başlangıcına üç kukla girdi ekleyin. Aşağıdaki kod parçacığı bir örnek gösterir.

    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    interface IMine
    {
        // Do not call these three methods.
        // They're exclusively to fill in the slots in the vtable.
        void GetIIdsSlot();
        void GetRuntimeClassNameSlot();
        void GetTrustLevelSlot();
    
        // The original members of the IMine interface go here.
        ...
    }
    

Etkilenen API’ler