Bagikan melalui


Meneruskan argumen

Seringkali perlu untuk membuat instans objek dengan konstruktor yang memerlukan argumen, atau dengan memanggil metode pembuatan statis. Ini dapat dicapai dalam XAML .NET Multi-platform App UI (.NET MAUI) dengan menggunakan x:Arguments atribut dan x:FactoryMethod :

  • Atribut x:Arguments digunakan untuk menentukan argumen konstruktor untuk konstruktor non-default, atau untuk deklarasi objek metode pabrik. Untuk informasi selengkapnya, lihat Meneruskan argumen konstruktor.
  • Atribut x:FactoryMethod digunakan untuk menentukan metode pabrik yang dapat digunakan untuk menginisialisasi objek. Untuk informasi selengkapnya, lihat Memanggil metode pabrik.

Selain itu, x:TypeArguments atribut dapat digunakan untuk menentukan argumen jenis generik ke konstruktor jenis generik. Untuk informasi selengkapnya, lihat Menentukan argumen jenis generik.

Argumen dapat diteruskan ke konstruktor dan metode pabrik menggunakan primitif bahasa .NET MAUI XAML berikut:

  • x:Array, yang sesuai dengan Array.
  • x:Boolean, yang sesuai dengan Boolean.
  • x:Byte, yang sesuai dengan Byte.
  • x:Char, yang sesuai dengan Char.
  • x:DateTime, yang sesuai dengan DateTime.
  • x:Decimal, yang sesuai dengan Decimal.
  • x:Double, yang sesuai dengan Double.
  • x:Int16, yang sesuai dengan Int16.
  • x:Int32, yang sesuai dengan Int32.
  • x:Int64, yang sesuai dengan Int64.
  • x:Object, yang sesuai dengan Object.
  • x:Single, yang sesuai dengan Single.
  • x:String, yang sesuai dengan String.
  • x:TimeSpan, yang sesuai dengan TimeSpan.

Dengan pengecualian x:DateTime, primitif bahasa lainnya berada dalam spesifikasi XAML 2009.

Catatan

Bahasa x:Single primitif dapat digunakan untuk meneruskan float argumen.

Meneruskan argumen konstruktor

Argumen dapat diteruskan ke konstruktor non-default menggunakan x:Arguments atribut . Setiap argumen konstruktor harus dibatasi dalam elemen XML yang mewakili jenis argumen.

Contoh berikut menunjukkan menggunakan x:Arguments atribut dengan tiga konstruktor yang berbeda Color :

<BoxView HeightRequest="150"
         WidthRequest="150"
         HorizontalOptions="Center">
    <BoxView.Color>
        <Color>
            <x:Arguments>
                <x:Single>0.9</x:Single>
            </x:Arguments>
        </Color>
    </BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
         WidthRequest="150"
         HorizontalOptions="Center">
    <BoxView.Color>
        <Color>
            <x:Arguments>
                <x:Single>0.25</x:Single>
                <x:Single>0.5</x:Single>
                <x:Single>0.75</x:Single>
            </x:Arguments>
        </Color>
    </BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
         WidthRequest="150"
         HorizontalOptions="Center">
    <BoxView.Color>
        <Color>
            <x:Arguments>
                <x:Single>0.8</x:Single>
                <x:Single>0.5</x:Single>
                <x:Single>0.2</x:Single>
                <x:Single>0.5</x:Single>
            </x:Arguments>
        </Color>
    </BoxView.Color>
</BoxView>

Jumlah elemen dalam x:Arguments tag, dan jenis elemen ini, harus cocok dengan Color salah satu konstruktor. Color Konstruktor dengan satu parameter memerlukan nilai skala abu-abu float dari 0 (hitam) hingga 1 (putih). Color Konstruktor dengan tiga parameter memerlukan float nilai merah, hijau, dan biru mulai dari 0 hingga 1. Color Konstruktor dengan empat parameter menambahkan float saluran alfa sebagai parameter keempat.

Metode pabrik panggilan

Metode pabrik dapat dipanggil dalam .NET MAUI XAML dengan menentukan nama metode menggunakan x:FactoryMethod atribut , dan argumennya menggunakan x:Arguments atribut . Metode pabrik adalah public static metode yang mengembalikan objek atau nilai dengan jenis yang sama dengan kelas atau struktur yang menentukan metode.

Kelas Color mendefinisikan sejumlah metode pabrik, dan contoh berikut menunjukkan panggilan tiga di antaranya:

<BoxView HeightRequest="150"
         WidthRequest="150"
         HorizontalOptions="Center">
  <BoxView.Color>
    <Color x:FactoryMethod="FromRgba">
      <x:Arguments>
        <x:Byte>192</x:Byte>
        <x:Byte>75</x:Byte>
        <x:Byte>150</x:Byte>
        <x:Byte>128</x:Byte>
      </x:Arguments>
    </Color>
  </BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
         WidthRequest="150"
         HorizontalOptions="Center">
  <BoxView.Color>
    <Color x:FactoryMethod="FromHsla">
      <x:Arguments>
        <x:Double>0.23</x:Double>
        <x:Double>0.42</x:Double>
        <x:Double>0.69</x:Double>
        <x:Double>0.7</x:Double>
      </x:Arguments>
    </Color>
  </BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
         WidthRequest="150"
         HorizontalOptions="Center">
  <BoxView.Color>
    <Color x:FactoryMethod="FromHex">
      <x:Arguments>
        <x:String>#FF048B9A</x:String>
      </x:Arguments>
    </Color>
  </BoxView.Color>
</BoxView>

Jumlah elemen dalam x:Arguments tag, dan jenis elemen ini, harus cocok dengan argumen metode pabrik yang dipanggil. Metode FromRgba pabrik memerlukan empat byte argumen, yang mewakili nilai merah, hijau, biru, dan alfa, masing-masing berkisar antara 0 hingga 255. Metode FromHsla pabrik memerlukan empat float argumen, yang mewakili nilai hue, saturasi, luminositas, dan alfa, masing-masing berkisar antara 0 hingga 1. Metode FromHex pabrik memerlukan string argumen yang mewakili warna heksadesimal (A)RGB.

Tentukan argumen jenis generik

Argumen jenis generik untuk konstruktor jenis generik dapat ditentukan menggunakan x:TypeArguments atribut , seperti yang ditunjukkan dalam contoh berikut:

<StackLayout>
    <StackLayout.Margin>
        <OnPlatform x:TypeArguments="Thickness">
          <On Platform="iOS" Value="0,20,0,0" />
          <On Platform="Android" Value="5, 10" />
        </OnPlatform>
    </StackLayout.Margin>
</StackLayout>

Kelas OnPlatform adalah kelas generik dan harus dibuat dengan atribut yang cocok dengan x:TypeArguments jenis target. On Di kelas , Platform atribut dapat menerima satu string nilai, atau beberapa nilai yang dibatasi string koma. Dalam contoh ini, StackLayout.Margin properti diatur ke khusus Thicknessplatform .

Untuk informasi selengkapnya tentang argumen jenis generik, lihat Generik di XAML.