Share via


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

참고 항목