XAML의 제네릭
System.Xaml 구현된 .NET XAML 서비스는 제네릭 CLR 형식 사용을 지원합니다. 이 지원에는 제네릭의 제약 조건을 형식 인수로 지정하고 제네릭 컬렉션 사례에 적절한 Add
메서드를 호출하여 제약 조건을 적용하는 것이 포함됩니다. 이 항목에서는 XAML에서 제네릭 형식을 사용하고 참조하는 측면을 설명합니다.
x:TypeArguments
x:TypeArguments
XAML 언어로 정의된 지시문입니다. 제네릭 형식에서 지원하는 XAML 형식의 멤버로 사용되는 경우 x:TypeArguments
제네릭의 제한 형식 인수를 백업 생성자에 전달합니다. 구문 예제를 포함하는 x:TypeArguments
.NET XAML Services 사용과 관련된 참조 구문은 x:TypeArguments 지시문참조하세요.
x:TypeArguments
문자열을 사용하고 형식 변환기를 지원하므로 일반적으로 XAML 사용에서 특성으로 선언됩니다.
XAML 노드 스트림에서 x:TypeArguments
선언된 정보는 노드 스트림의 StartObject
위치에 있는 XamlType.TypeArguments 가져올 수 있습니다.
XamlType.TypeArguments 반환 값은 XamlType 값 목록입니다. XAML 형식이 제네릭 형식을 나타내는지 여부를 결정하는 작업은 XamlType.IsGeneric호출하여 수행할 수 있습니다.
XAML의 제네릭에 대한 규칙 및 구문 규칙
XAML에서 제네릭 형식은 항상 제한된 제네릭으로 표현되어야 합니다. 제한되지 않은 제네릭은 XAML 형식 시스템 또는 XAML 노드 스트림에 존재하지 않으며 XAML 태그에 표시될 수 없습니다. 제네릭이 x:TypeArguments
참조되는 제네릭의 중첩 형식 제약 조건인 경우 또는 제네릭 형식에 대한 CLR 형식 참조를 제공하는 경우 또는 x:Type
XAML 특성 구문 내에서 제네릭을 참조할 수 있습니다. 제네릭 참조는 .NET XAML 서비스에서 정의한 XamlTypeTypeConverter 클래스를 통해 지원됩니다.
XamlTypeTypeConverter 사용하도록 설정된 XAML 특성 구문 형식은 제네릭 형식 및 제약 조건에 꺾쇠 괄호를 사용하는 일반적인 MSIL/CLR 구문 규칙을 변경하고 대신 제약 조건 컨테이너의 괄호를 대체합니다. 예제는 x:TypeArguments 지시문참조하세요.
제네릭 및 XAML 2009 기능
CLR 기본 형식을 매핑하여 공용 언어 기본 형식에 대한 XAML 형식을 가져오는 대신 XAML 2009를 사용하는 경우 x
XAML 2009의 XAML 언어 XAML 네임스페이스임).
<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>
WPF의 제네릭 지원
특히 WPF를 대상으로 하는 경우 XAML 2006 사용의 경우 x:Classx:TypeArguments
같은 요소에 제공해야 하며 해당 요소는 XAML 문서의 루트 요소여야 합니다. 루트 요소는 하나 이상의 형식 인수를 사용하여 제네릭 형식에 매핑해야 합니다. 예를 들어 PageFunction<T>.
제네릭 사용을 지원하는 가능한 해결 방법은 제네릭 형식을 반환할 수 있는 사용자 지정 태그 확장을 정의하거나 제네릭 형식에서 파생되지만 고유한 클래스 정의에서 제네릭 제약 조건을 평면화하는 래핑 클래스 정의를 제공하는 것입니다.
WPF에서는 XAML 2009 기능을 x:TypeArguments
함께 사용할 수 있지만 느슨한 XAML(태그 컴파일되지 않은 XAML)에만 사용할 수 있습니다. WPF용 태그 컴파일 XAML 및 XAML의 BAML 형식은 현재 XAML 2009 키워드 및 기능을 지원하지 않습니다.
.NET Framework 3.5용 Windows Workflow Foundation의 사용자 지정 워크플로는 일반 XAML 사용을 지원하지 않습니다.
참고 항목
- x:TypeArguments 지시문
- x:Class 지시문
- 공통 XAML 언어 기본 형식 대한 기본 제공 형식
.NET Desktop feedback