Delen via


Algoritme voor het laden van satellietassembly's

Satellietassembly's worden gebruikt voor het opslaan van gelokaliseerde resources die zijn aangepast voor taal en cultuur.

Satellietassembly's gebruiken een ander laadalgoritmen dan algemene beheerde assembly's.

Wanneer worden satellietassembly's geladen?

Satellietassembly's worden geladen bij het laden van een gelokaliseerde resource.

De basis-API voor het laden van gelokaliseerde resources is de System.Resources.ResourceManager klasse. Uiteindelijk roept de ResourceManager klasse de GetSatelliteAssembly methode voor elke CultureInfo.Nameaan.

API's op een hoger niveau kunnen de API op laag niveau abstraheren.

Algoritme

Het terugvalproces voor .NET Core-resources omvat de volgende stappen:

  1. Bepaal het active AssemblyLoadContext exemplaar. In alle gevallen is het active exemplaar de uitvoering van de assembly AssemblyLoadContext.

  2. Het active exemplaar laadt een satellietassembly voor de aangevraagde cultuur in de volgende prioriteitsvolgorde:

  3. Als een satellietassembly wordt geladen:

    • De AppDomain.AssemblyLoad gebeurtenis wordt gegenereerd.
    • De assembly wordt gezocht naar de aangevraagde resource. Als de runtime de resource in de assembly vindt, wordt deze gebruikt. Als de resource niet wordt gevonden, wordt de zoekopdracht voortgezet.

    Notitie

    Om een resource in de satellietassembly te vinden, zoekt de runtime naar het resourcebestand dat door de ResourceManager huidige is CultureInfo.Nameaangevraagd. In het resourcebestand wordt gezocht naar de aangevraagde resourcenaam. Als een van beide niet wordt gevonden, wordt de resource behandeld als niet gevonden.

  4. De ResourceManager volgende zoekopdracht doorzoekt de bovenliggende cultuurassembly's door een groot aantal potentiële niveaus, telkens wanneer u stap 2 & 3 herhaalt.

    Elke cultuur heeft slechts één bovenliggend element, dat wordt gedefinieerd door de CultureInfo.Parent eigenschap.

    Het zoeken naar bovenliggende culturen stopt wanneer het eigendom van Parent een cultuur is CultureInfo.InvariantCulture.

    Voor de InvariantCulture, gaan we niet terug naar stap 2 & 3, maar gaan we verder met stap 5.

  5. Als de resource nog steeds niet wordt gevonden, ResourceManager wordt de resource gebruikt voor de standaardcultuur (terugval).

    Normaal gesproken worden de resources voor de standaardcultuur opgenomen in de hoofdtoepassingsassembly. U kunt echter opgeven UltimateResourceFallbackLocation.Satellite voor de NeutralResourcesLanguageAttribute.Location eigenschap. Deze waarde geeft aan dat de ultieme terugvallocatie voor resources een satellietassemblage is in plaats van de hoofdassembly.

    Notitie

    De standaardcultuur is de ultieme terugval. Daarom raden we u aan altijd een uitgebreide set resources in het standaardresourcebestand op te nemen. Hiermee voorkomt u dat uitzonderingen worden gegenereerd. Door een volledige set te hebben, biedt u een terugval voor alle resources en zorgt u ervoor dat ten minste één resource altijd aanwezig is voor de gebruiker, zelfs als deze niet cultureel specifiek is.

  6. Eindelijk