다음을 통해 공유


인수 전달

인수가 필요한 생성자를 사용하거나 정적 생성 메서드를 호출하여 개체를 인스턴스화해야 하는 경우가 많습니다. 이 작업은 다음과 같은 특성을 사용하여 .NET 다중 플랫폼 앱 UI(.NET MAUI) XAML에서 x:Arguments x:FactoryMethod 수행할 수 있습니다.

  • x:Arguments 특성은 기본이 아닌 생성자 또는 팩터리 메서드 개체 선언에 대한 생성자 인수를 지정하는 데 사용됩니다. 자세한 내용은 Pass 생성자 인수를 참조 하세요.
  • x:FactoryMethod 특성은 개체를 초기화하는 데 사용할 수 있는 팩터리 메서드를 지정하는 데 사용됩니다. 자세한 내용은 호출 팩터리 메서드를 참조 하세요.

또한 x:TypeArguments 특성을 사용하여 제네릭 형식의 생성자에 대한 제네릭 형식 인수를 지정할 수 있습니다. 자세한 내용은 제네릭 형식 인수 지정을 참조 하세요.

다음 .NET MAUI XAML 언어 기본 형식을 사용하여 인수를 생성자 및 팩터리 메서드에 전달할 수 있습니다.

  • x:Array에 해당하는 Array.
  • x:Boolean에 해당하는 Boolean.
  • x:Byte에 해당하는 Byte.
  • x:Char에 해당하는 Char.
  • x:DateTime에 해당하는 DateTime.
  • x:Decimal에 해당하는 Decimal.
  • x:Double에 해당하는 Double.
  • x:Int16에 해당하는 Int16.
  • x:Int32에 해당하는 Int32.
  • x:Int64에 해당하는 Int64.
  • x:Object에 해당하는 Object.
  • x:Single에 해당하는 Single.
  • x:String에 해당하는 String.
  • x:TimeSpan에 해당하는 TimeSpan.

예외를 제외하고 x:DateTime다른 언어 기본 형식은 XAML 2009 사양에 있습니다.

참고 항목

언어 기본 형식을 x:Single 사용하여 인수를 전달할 float 수 있습니다.

생성자 인수 전달

특성을 사용하여 기본이 아닌 생성자에 인수를 x:Arguments 전달할 수 있습니다. 각 생성자 인수는 인수의 형식을 나타내는 XML 요소 내에서 구분되어야 합니다.

다음 예제에서는 세 개의 서로 다른 Color 생성자와 특성을 사용하는 x:Arguments 방법을 보여 줍니다.

<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>

태그 내 x:Arguments 의 요소 수와 이러한 요소의 형식은 생성자 중 Color 하나와 일치해야 합니다. 단일 매개 변수가 있는 생성자에는 Color 0(검정)에서 1(흰색)의 회색조 float 값이 필요합니다. 세 개의 매개 변수가 float 있는 생성자에는 Color 0에서 1 사이의 빨강, 녹색 및 파란색 값이 필요합니다. Color 네 개의 매개 변수가 있는 생성자는 알파 채널을 네 번째 매개 변수로 추가합니다float.

팩터리 메서드 호출

특성을 사용하여 메서드의 이름과 특성을 사용하는 x:FactoryMethod 인수를 지정하여 .NET MAUI XAML에서 팩터리 메서드를 호출할 x:Arguments 수 있습니다. 팩터리 메서드는 메서드를 public static 정의하는 클래스 또는 구조체와 동일한 형식의 개체 또는 값을 반환하는 메서드입니다.

클래스는 Color 여러 팩터리 메서드를 정의하고 다음 예제에서는 세 가지 메서드를 호출하는 방법을 보여 줍니다.

<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>

태그 내 x:Arguments 의 요소 수와 이러한 요소의 형식은 호출되는 팩터리 메서드의 인수와 일치해야 합니다. 팩터리 메서드에는 FromRgba 각각 0에서 255 사이의 빨강, 녹색, 파랑 및 알파 값을 나타내는 네 개의 byte 인수가 필요합니다. 팩터리 메서드에는 FromHsla 각각 0에서 1 사이의 색조, 채도, 광도 및 알파 값을 나타내는 네 개의 float 인수가 필요합니다. 팩터리 메서드에는 FromHex string 16진수(A)RGB 색을 나타내는 인수가 필요합니다.

제네릭 형식 인수 지정

다음 예제와 같이 특성을 사용하여 x:TypeArguments 제네릭 형식의 생성자에 대한 제네릭 형식 인수를 지정할 수 있습니다.

<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>

클래스는 OnPlatform 제네릭 클래스이며 대상 형식과 일치하는 특성으로 x:TypeArguments 인스턴스화해야 합니다. 클래스에서 On 특성은 Platform 단일 string 값 또는 여러 쉼표로 구분된 string 값을 허용할 수 있습니다. 이 예제에서는 속성이 StackLayout.Margin 플랫폼별 Thickness으로 설정됩니다.

제네릭 형식 인수에 대한 자세한 내용은 XAML의 제네릭을 참조하세요.