Bagikan melalui


Algoritma pemuatan rakitan satelit

Rakitan satelit digunakan untuk menyimpan sumber daya yang dilokalkan yang disesuaikan untuk bahasa dan budaya.

Rakitan satelit menggunakan algoritma pemuatan yang berbeda dari rakitan yang dikelola umum.

Kapan rakitan satelit dimuat?

Rakitan satelit dimuat saat memuat sumber daya yang dilokalkan.

API dasar untuk memuat sumber daya yang dilokalkan adalah System.Resources.ResourceManager kelas . ResourceManager Pada akhirnya kelas akan memanggil GetSatelliteAssembly metode untuk setiap CultureInfo.Name.

API tingkat yang lebih tinggi dapat mengabstraksi API tingkat rendah.

Algoritma

Proses fallback sumber daya .NET Core melibatkan langkah-langkah berikut:

  1. Tentukan activeAssemblyLoadContext instans. Dalam semua kasus, active instans adalah assembly AssemblyLoadContextyang mengeksekusi .

  2. active Instans memuat rakitan satelit untuk budaya yang diminta dalam urutan prioritas berikut:

  3. Jika rakitan satelit dimuat:

    • Acara AppDomain.AssemblyLoad dinaikkan.
    • Rakitan dicari untuk sumber daya yang diminta. Jika runtime menemukan sumber daya di assembly, runtime tersebut akan menggunakannya. Jika tidak menemukan sumber daya, sumber daya akan melanjutkan pencarian.

    Catatan

    Untuk menemukan sumber daya dalam rakitan satelit, runtime mencari file sumber daya yang ResourceManager diminta oleh untuk saat ini CultureInfo.Name. Dalam file sumber daya, file tersebut mencari nama sumber daya yang diminta. Jika keduanya tidak ditemukan, sumber daya diperlakukan sebagai tidak ditemukan.

  4. Selanjutnya ResourceManager mencari rakitan budaya induk melalui banyak tingkat potensial, setiap kali mengulangi langkah 2 & 3.

    Setiap budaya hanya memiliki satu induk, yang didefinisikan oleh CultureInfo.Parent properti .

    Pencarian budaya induk berhenti ketika properti budaya Parent adalah CultureInfo.InvariantCulture.

    InvariantCultureUntuk , kami tidak kembali ke langkah 2 & 3, melainkan melanjutkan dengan langkah 5.

  5. Jika sumber daya masih belum ditemukan, ResourceManager sumber daya akan digunakan untuk budaya default (fallback).

    Biasanya, sumber daya untuk budaya default disertakan dalam perakitan aplikasi utama. Namun, Anda dapat menentukan UltimateResourceFallbackLocation.Satellite untuk NeutralResourcesLanguageAttribute.Location properti . Nilai ini menunjukkan bahwa lokasi fallback utama untuk sumber daya adalah rakitan satelit daripada perakitan utama.

    Catatan

    Budaya default adalah fallback utama. Oleh karena itu, kami sarankan Anda selalu menyertakan sekumpulan sumber daya lengkap dalam file sumber daya default. Ini membantu mencegah pengecualian dilemparkan. Dengan memiliki set lengkap, Anda menyediakan fallback untuk semua sumber daya dan memastikan bahwa setidaknya satu sumber daya selalu ada untuk pengguna, bahkan jika tidak spesifik secara budaya.

  6. Akhirnya