<ImpliesType> 요소(.NET 네이티브)
포함 형식 또는 메서드에 정책이 적용된 경우 해당 정책을 형식에 적용합니다.
구문
<ImpliesType Name="type_name"
Activate="policy_type"
Browse="policy_type"
Dynamic="policy_type"
Serialize="policy_type"
DataContractSerializer="policy_setting"
DataContractJsonSerializer="policy_setting"
XmlSerializer="policy_setting"
MarshalObject="policy_setting"
MarshalDelegate="policy_setting"
MarshalStructure="policy_setting" />
특성 및 요소
다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.
특성
Attribute | 특성 유형 | 설명 |
---|---|---|
Name |
일반 | 필수 특성입니다. 형식 이름을 지정합니다. |
Activate |
반영 | 선택적 특성입니다. 인스턴스를 활성화할 수 있도록 생성자에 대한 런타임 액세스를 제어합니다. |
Browse |
반영 | 선택적 특성입니다. 프로그램 요소에 대한 정보 쿼리를 제어하지만 런타임 액세스를 사용하도록 설정하지는 않습니다. |
Dynamic |
반영 | 선택적 특성입니다. 동적 프로그래밍을 수행할 수 있도록 생성자, 메서드, 필드, 속성 및 이벤트를 비롯한 모든 형식 멤버에 대한 런타임 액세스를 제어합니다. |
Serialize |
직렬화 | 선택적 특성입니다. Newtonsoft JSON 직렬 변환기 등의 라이브러리를 통해 형식 인스턴스를 직렬화 및 역직렬화할 수 있도록 생성자, 필드 및 속성에 대한 런타임 액세스를 제어합니다. |
DataContractSerializer |
직렬화 | 선택적 특성입니다. System.Runtime.Serialization.DataContractSerializer 클래스를 사용하는 serialization에 대한 정책을 제어합니다. |
DataContractJsonSerializer |
직렬화 | 선택적 특성입니다. System.Runtime.Serialization.Json.DataContractJsonSerializer 클래스를 사용하는 JSON serialization에 대한 정책을 제어합니다. |
XmlSerializer |
직렬화 | 선택적 특성입니다. System.Xml.Serialization.XmlSerializer 클래스를 사용하는 XML serialization에 대한 정책을 제어합니다. |
MarshalObject |
Interop | 선택적 특성입니다. Windows 런타임 및 COM에 대한 참조 형식을 마샬링하는 정책을 제어합니다. |
MarshalDelegate |
Interop | 선택적 특성입니다. 네이티브 코드에 대한 함수 포인터로 대리자 형식을 마샬링하는 정책을 제어합니다. |
MarshalStructure |
Interop | 선택적 특성입니다. 값 형식을 네이티브 코드로 마샬링하는 정책을 제어합니다. |
Name 특성
값 | 설명 |
---|---|
type_name | 형식 이름입니다. 이 <ImpliesType> 요소가 나타내는 형식이 포함 <Type> 요소와 같은 네임스페이스에 있으면 type_name은 네임스페이스가 없는 형식 이름을 포함할 수 있습니다. 그러지 않으면 type_name은 정규화된 형식 이름을 포함해야 합니다. |
기타 모든 특성
값 | 설명 |
---|---|
policy_setting | 이 정책 형식에 적용할 설정입니다. 가능한 값은 All , Auto , Excluded , Public , PublicAndInternal , Required Public , Required PublicAndInternal 및 Required All 입니다. 자세한 내용은 런타임 지시문 정책 설정을 참조하세요. |
자식 요소
없음
부모 요소
요소 | 설명 |
---|---|
<형식> | 형식 및 모든 해당 멤버에 리플렉션 정책을 적용합니다. |
<TypeInstantiation> | 생성된 제네릭 형식 및 모든 해당 멤버에 리플렉션 정책을 적용합니다. |
<방법> | 메서드에 리플렉션 정책을 적용합니다. |
설명
<ImpliesType>
요소는 주로 라이브러리에서 사용되며 다음과 같은 시나리오를 해결합니다.
형식 하나에 대해 루틴을 리플렉션해야 하면 두 번째 형식에 대해서도 루틴을 리플렉션해야 하는 경우
정적 분석에서 필요한 것으로 표시하지 않았기 때문에 두 번째 형식의 암시적 인스턴스화에 대한 메타데이터를 사용할 수 없는 경우
가장 일반적인 두 가지 형식은 공유 형식 인수가 있는 제네릭 인스턴스화입니다.
<ImpliesType>
요소는 부모 요소에 의해 지정된 형식을 리플렉션해야 하는 경우 <ImpliesType>
요소에 의해 지정된 형식도 리플렉션해야 한다는 가정 하에 정의되었습니다. 예를 들어 다음 리플렉션 지시문은 Explicit<T>
및 Implicit<T>
의 두 형식에 적용됩니다.
<Type Name="Explicit{ET}">
<ImpliesType Name="Implicit{ET}" Dynamic="Required Public" />
</Type>
이 지시문은 Explicit
의 인스턴스화에 정의된 Dynamic
정책 설정이 없으면 아무런 영향을 주지 않습니다. 예를 들어 Explicit<Int32>
의 경우 Implicit<Int32>
는 공용 멤버가 루트에 있는 상태로 인스턴스화되며 동적 프로그래밍을 위해 해당 메타데이터에 액세스할 수 있습니다.
다음은 하나 이상의 serializer에 적용되는 실제 예제입니다. 지시문은 IList<
something>
으로 입력한 항목을 리플렉션하는 동시에 애플리케이션별 주석이 없어도 해당 List<
something>
형식도 리플렉션해야 하는 요구 사항을 캡처합니다.
<Type Name="System.Collections.Generic.IList{T}">
<ImpliesType Name="System.Collections.Generic.List{T}" Serialize="Public" />
</Type>
<ImpliesType>
요소는 <Method>
내에서도 나타날 수 있습니다. 경우에 따라 제네릭 메서드를 인스턴스화하면 형식 인스턴스화에 대한 리플렉션이 수행될 수 있기 때문입니다. 지정한 라이브러리가 연결된 List<T> 및 Array 형식과 함께 동적으로 액세스하는 제네릭 메서드 IEnumerable<T> MakeEnumerable<T>(string spelling, T defaultValue)
의 경우를 예로 들 수 있습니다. 이 예는 다음 코드와 같이 표시될 수 있습니다.
<Type Name="MyType">
<Method Name="MakeEnumerable{T}" Signature="(System.String, T)" Dynamic="Included">
<ImpliesType Name="T[]" Dynamic="Public" />
<ImpliesType Name="System.Collections.Generic.List{T}" Dynamic="Public" />
</Method>
</Type>
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기