Adaptív verziókód

Az adaptív kód írása ugyanúgy képzelhető el, mint egy adaptív felhasználói felület létrehozása. Az alapkódot úgy tervezheti meg, hogy a legalacsonyabb operációsrendszer-verzión fusson, majd adjon hozzá funkciókat, ha azt észleli, hogy az alkalmazás egy magasabb verzióban fut, ahol új funkció érhető el.

Az API-szerződésekkel és a Visual Studio konfigurálásával kapcsolatos ApiInformationháttérinformációkért lásd: Adaptív verziójú alkalmazások.

Prerequisites

Futtatókörnyezeti API-ellenőrzések

A kód egy feltételében használja a Windows.Foundation.Metadata.ApiInformation osztályt annak ellenőrzésére, hogy jelen van-e a meghívni kívánt API. Ezt a feltételt az alkalmazás bárhol kiértékeli, de csak olyan eszközökön értékeli ki true , ahol az API jelen van, és elérhető a híváshoz.

Important

ApiInformationaz ellenőrzések csak a névtérben lévő Windows-futtatókörnyezet típusok Windows.* esetében működnek. Nem észlelik a WinUI-típusokat (Microsoft.UI.Xaml.*), mert ezek a típusok a Windows App SDK keretrendszercsomag részét képezik, nem pedig az operációs rendszernek, és nem regisztrálva vannak a lekérdezésre képes WinRT-metaadatokkéntApiInformation. #if az előprocesszor-irányelvek itt sem segítenek– a rendszer fordításkor értékeli ki őket a cél-keretrendszer alapján, nem pedig a futtatókörnyezetben az alkalmazás operációs rendszer vagy SDK-verzió alapján. Ha egy WinUI-funkciót feltételesen szeretne elérhetővé tenni, ellenőrizze, hogy az alkalmazás melyik Windows App SDK-verzióra épült (lásd: Verzióadaptív alkalmazások), vagy foglalja a hívást egy try/catch blokkba, és hiba esetén alkalmazzon tartalék megoldást futásidőben.

Tip

Számos futtatókörnyezeti API-ellenőrzés befolyásolhatja az alkalmazás teljesítményét. Egyszer végezze el az ellenőrzést, és gyorsítótárazza az eredményt, majd használja a gyorsítótárazott eredményt az alkalmazásban.

Adaptív kódbeállítások

Adaptív kód kétféleképpen hozható létre:

  • Alkalmazáskód – Futtatókörnyezeti API-ellenőrzések használata a mögöttes kódban. A legtöbb forgatókönyv esetében ez az ajánlott módszer.
  • Állapotindítók – Olyan bővíthető állapotindítók használata, amelyek api-k jelenléte alapján aktiválják a vizualizációs állapotokat. Használjon állapotindítókat, ha az operációs rendszer verziói közötti egyszerű tulajdonság- vagy enumváltozás egy vizuális állapothoz kapcsolódik.

Példa: Számérték keresése

Ez a példa bemutatja, hogyan ellenőrizheti, hogy egy adott számérték szerepel-e a használat előtt. Ha az érték nem érhető el, a kód egy alternatívát használ. EnergySaverStatusés PowerManager valódi Windows-futtatókörnyezet típusúak a Windows.System.Power névtérben, így ApiInformation helyesen kérdezhetők le.

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

Amikor gyorsítótárazza egy API-ellenőrzés eredményét, használja ezt a gyorsítótárazott értéket következetesen az alkalmazásban. Ne ismételje meg az ellenőrzést több helyen – ellenőrizze egyszer, tárolja az eredményt, és hivatkozzon rá mindenhol.

Példa: Metódus keresése

A(z) adott metódus meghívása előtt a IsMethodPresent használatával ellenőrizze, hogy elérhető-e:

DisplayRequest displayRequest = new DisplayRequest();

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

Példa: Tulajdonság ellenőrzése

A IsPropertyPresent használatával ellenőrizze, hogy egy adott tulajdonság elérhető-e, mielőtt kiolvassa:

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

Bevált gyakorlatok

Practice Útmutatók
Statikus sztringek használata Az API-nevek ApiInformation használatával történő ellenőrzésekor a .NET-reflexió helyett használjon fixen beégetett karakterláncokat a futásidejű típusbetöltési problémák elkerülése érdekében
Gyorsítótár-eredmények Minden API-ellenőrzés végrehajtása egyszeri indításkor, és az eredmény tárolása újrafelhasználásra
A minimális verzió alacsonyan tartása Állítsa be a projekt minimális verzióját olyan alacsonyra, hogy a lehető legtágabb célközönséget érje el, és adaptív kóddal megvilágítsa az újabb operációsrendszer-verziók funkcióit
A minimális verzió tesztelése Mindig tesztelje a minimálisan támogatott operációsrendszer-verziót annak ellenőrzéséhez, hogy a tartalék útvonalak megfelelően működnek-e