<GenericParameter> Element (.NET Native)

Applies policy to the parameter type of a generic type or method.

Syntax

<GenericParameter Name="generic_parameter_name"
                  Activate="policy_type"
                  Browse="policy_type"
                  Dynamic="policy_type"
                  Serialize="policy_type"
                  DataContractSerializer="policy_type"
                  DataContractJsonSerializer="policy_type"
                  XmlSerializer="policy_type"
                  MarshalObject="policy_type"
                  MarshalDelegate="policy_type"
                  MarshalStructure="policy_type" />

Attributes and Elements

The following sections describe attributes, child elements, and parent elements.

Attributes

Attribute Attribute type Description
Name General Required attribute. The name of the generic parameter. For example, for the generic delegate Func<T1,T2,TResult>, the value of the Name attribute is "TResult" to apply runtime policy to the delegate's return value.
Activate Reflection Optional attribute. Controls runtime access to constructors to enable activation of instances.
Browse Reflection Optional attribute. Controls querying for information about program elements, but does not enable any runtime access.
Dynamic Reflection Optional attribute. Controls runtime access to all type members, including constructors, methods, fields, properties, and events, to enable dynamic programming.
Serialize Serialization Optional attribute. Controls runtime access to constructors, fields, and properties, to enable type instances to be serialized and deserialized by libraries such as the Newtonsoft JSON serializer.
DataContractSerializer Serialization Optional attribute. Controls policy for serialization that uses the System.Runtime.Serialization.DataContractSerializer class.
DataContractJsonSerializer Serialization Optional attribute. Controls policy for JSON serialization that uses the System.Runtime.Serialization.Json.DataContractJsonSerializer class.
XmlSerializer Serialization Optional attribute. Controls policy for XML serialization that uses the System.Xml.Serialization.XmlSerializer class.
MarshalObject Interop Optional attribute. Controls policy for marshaling reference types to Windows Runtime and COM.
MarshalDelegate Interop Optional attribute. Controls policy for marshaling delegate types as function pointers to native code.
MarshalStructure Interop Optional attribute. Controls policy for marshaling value types to native code.

Name attribute

Value Description
generic_parameter_name Required attribute. The name of the generic type parameter. For example, for the generic delegate Func<T1,T2,TResult>, a generic_parameter_name value of "TResult" applies runtime policy to the delegate's return value.

All other attributes

Value Description
policy_setting The setting to apply to this policy type. Possible values are All, Public, PublicAndInternal, Required Public, Required PublicAndInternal, and Required All. For more information, see Runtime Directive Policy Settings.

Child Elements

None.

Parent Elements

Element Description
<Method> Applies runtime reflection policy to a constructor or method.
<Type> Applies runtime reflection policy to a particular type, such as a class or structure.

Remarks

The <GenericParameter> element is a child of either the <Method> or <Type> element and is used to apply policy to a particular generic type parameter, which is specified by its name in the generic type or method signature.

The <GenericParameter> element is most useful when used with serializers. The following example uses the <GenericParameter> element to apply policy to the type T in calls to the NewtonSoft JSON serializer's JsonConvert.DeserializeObject<T>(String) method overloads.

<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
   <Type Name="Newtonsoft.Json.JsonConvert" >
      <Method Name="DeserializeObject{T}">
         <GenericParameter Name="T" Serialize="Required All" />
      </Method>
   </Type>
</Directives>

See also