Sürüm uyarlamalı kod

Uyarlamalı kod yazmayı, uyarlamalı bir kullanıcı arabirimi oluşturmayı nasıl düşündüğünüze benzer şekilde düşünebilirsiniz. Temel kodunuzu en düşük işletim sistemi sürümünde çalışacak şekilde tasarlayın ve uygulamanızın yeni bir özelliğin kullanılabildiği daha yüksek bir sürümde çalıştığını algıladığınızda özellikler ekleyin.

ApiInformation, API sözleşmeleri ve Visual Studio’yu yapılandırma hakkında arka plan bilgileri için bkz. Sürüm uyarlamalı uygulamalar.

Prerequisites

Çalışma zamanı API kontrolleri

Çağırmak istediğiniz API'nin varlığını test etmek için kodunuzdaki bir koşulda Windows.Foundation.Metadata.ApiInformation sınıfını kullanın. Bu koşul, uygulamanızın çalıştığı her yerde değerlendirilir, ancak yalnızca API'nin mevcut olduğu ve çağrılabildiği cihazlarda true olarak değerlendirilir.

Important

ApiInformation denetimleri, Windows.* ad alanındaki Windows Çalışma Zamanı türleri için yalnızca çalışır. Bu türler işletim sisteminin değil Windows Uygulama SDK'sı çerçeve paketinin parçası olduğundan ve sorgu yapabilen WinRT meta verileri olarak kaydedilmediğinden WinUI Microsoft.UI.Xaml.*ApiInformation) algılamaz. #if önişlemci yönergeleri burada da yardımcı olmaz; uygulamanın üzerinde çalıştığı işletim sistemi veya SDK sürümünü temel alan çalışma zamanında değil, hedef çerçeveye göre derleme zamanında değerlendirilir. Bir WinUI özelliğini koşullu olarak aydınlatmak için uygulamanızın oluşturulduğu Windows Uygulama SDK'sı sürümü denetleyin (bkz. Sürüm uyarlamalı uygulamalar) veya bir deneme/yakalama işlemiyle aramayı sarmalayın ve çalışma zamanında başarısız olursa geri dönün.

Tavsiye

Çok sayıda çalışma zamanı API'si denetimi uygulamanızın performansını etkileyebilir. Denetimi bir kez gerçekleştirin ve sonucu önbelleğe alın, ardından önbelleğe alınan sonucu uygulamanız genelinde kullanın.

Uyarlamalı kod seçenekleri

Uyarlamalı kod oluşturmanın iki yolu vardır:

  • Uygulama kodu — Arkadaki kodda çalışma zamanı API'si denetimlerini kullanın. Bu, çoğu senaryo için önerilen yaklaşımdır.
  • Durum tetikleyicileri — API'nin varlığına bağlı olarak görsel durumları etkinleştiren genişletilebilir durum tetikleyicilerini kullanın. Bir görsel duruma bağlı işletim sistemi sürümleri arasında basit bir özelliğiniz veya numaralandırma değişikliğiniz olduğunda durum tetikleyicilerini kullanın.

Örnek: Bir enum değeri olup olmadığını kontrol etme

Bu örnek, belirli bir enum değerini kullanmadan önce mevcut olup olmadığının nasıl denetleneceğini gösterir. Değer yoksa, kod bir alternatife geri döner. EnergySaverStatusve PowerManager ad alanında Windows.System.Power orijinal Windows Çalışma Zamanı türleridir, bu nedenle ApiInformation bunları doğru sorgulayabilir.

if (ApiInformation.IsEnumNamedValuePresent(
    "Windows.System.Power.EnergySaverStatus", "On"))
{
    if (PowerManager.EnergySaverStatus == EnergySaverStatus.On)
    {
        // Reduce background work to save battery.
        ReduceBackgroundActivity();
    }
}
else
{
    // Energy Saver status isn't available on this OS version; skip the check.
}

void ReduceBackgroundActivity()
{
    // Pause non-essential timers, syncs, and animations here.
}

Important

BIR API denetiminin sonucunu önbelleğe aldığınızda, önbelleğe alınan bu değeri uygulamanız genelinde tutarlı bir şekilde kullanın. Kontrolü birden çok yerde tekrarlamayın — bir kez yapın, sonucu saklayın ve gereken her yerde buna başvurun.

Örnek: Bir yöntemi kontrol etme

Belirli bir yöntemi çağırmadan önce kullanılabilir olduğunu doğrulamak için kullanın IsMethodPresent :

DisplayRequest displayRequest = new DisplayRequest();

if (ApiInformation.IsMethodPresent(
    "Windows.System.Display.DisplayRequest", "RequestActive"))
{
    displayRequest.RequestActive();
}

Örnek: Bir özelliği denetleyin

Okumadan önce belirli bir özelliğin kullanılabilir olduğunu doğrulamak için kullanın IsPropertyPresent :

if (ApiInformation.IsPropertyPresent(
    "Windows.System.Power.PowerManager", "RemainingChargePercent"))
{
    int chargePercent = PowerManager.RemainingChargePercent;
}

Önerilen yöntemler

Practice Yönergeler
Statik dizeleri kullanma API adlarını ApiInformation ile denetlerken, çalışma zamanı tür yükleme sorunlarını önlemek için .NET yansıması yerine sabit kodlanmış dizeler kullanın
Önbellek sonuçları Başlangıçta her API denetimini bir kez gerçekleştirin ve sonucu yeniden kullanmak üzere depolayın
En düşük sürümü düşük tutun Projenizin En Düşük Sürümünü en geniş hedef kitleye ulaşmak için en düşük düzeyde ayarlayın ve uyarlamalı kodu kullanarak yeni işletim sistemi sürümlerindeki özellikleri açın
En düşük sürümde test edin Geri dönüş yollarının düzgün çalıştığını doğrulamak için desteklenen en düşük işletim sistemi sürümünü her zaman test edin