﻿<?xml version="1.0" encoding="utf-8"?><Type Name="MarshalAsAttribute" FullName="System.Runtime.InteropServices.MarshalAsAttribute" FullNameSP="System_Runtime_InteropServices_MarshalAsAttribute" Maintainer="ecma"><TypeSignature Language="ILASM" Value=".class public sealed MarshalAsAttribute extends System.Attribute" /><TypeSignature Language="C#" Value="public sealed class MarshalAsAttribute : Attribute" /><TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit MarshalAsAttribute extends System.Attribute" /><MemberOfLibrary>RuntimeInfrastructure</MemberOfLibrary><AssemblyInfo><AssemblyName>mscorlib</AssemblyName><AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement><Base><BaseTypeName>System.Attribute</BaseTypeName></Base><Interfaces /><Attributes><Attribute><AttributeName>System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue | System.AttributeTargets.All, Inherited=false)</AttributeName></Attribute><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName></Attribute></Attributes><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>You can apply this attribute to parameters, fields, or return values.</para><para>This attribute is optional, as each data type has a default marshaling behavior. This attribute is only necessary when a given type can be marshaled to multiple types. For example, you can marshal a string to unmanaged code as either a <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPStr" />, a <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPWStr" />, a <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPTStr" />, or a <see cref="F:System.Runtime.InteropServices.UnmanagedType.BStr" />. By default, the common language runtime marshals a string parameter as a <see cref="F:System.Runtime.InteropServices.UnmanagedType.BStr" /> to COM methods. You can apply the <see cref="T:System.Runtime.InteropServices.MarshalAsAttribute" /> attribute to an individual field or parameter to cause that particular string to be marshaled as a <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPStr" /> instead of a <see cref="F:System.Runtime.InteropServices.UnmanagedType.BStr" />. The <format type="text/html"><a href="A487D61B-D166-467B-A7CA-D8B52FBFF42D">[&lt;topic://cpgrfTypeLibraryExporterTlbexpexe&gt;]</a></format> passes your marshaling preferences to the common language runtime.</para><para>Some parameters and return values have different default marshaling behavior when used with COM interop or platform invoke. By default, the runtime marshals a string parameter (and fields in a value type) as a <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPStr" /> to a platform invoke method or function. For additional information, see <format type="text/html"><a href="C0A9BCDF-3DF8-4DB3-B1B6-ABBDB2AF809A">[&lt;topic://cpcondefaultmarshalingbehavior&gt;]</a></format>.</para><para>In most cases, the attribute simply identifies the format of the unmanaged data using the <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> enumeration, as shown in the following C# signature: </para><code>void
    MyMethod([MarshalAs(LPStr)] String s);</code><para>Some <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> enumeration members require additional information. For example, additional information is needed when the <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> is <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPArray" />. For a complete description of how to use this attribute with arrays, see <format type="text/html"><a href="8A3CCA8B-DD94-4E3D-AD9A-9EE7590654BC">[&lt;topic://cpcondefaultmarshalingforarrays&gt;]</a></format>.</para><para>The <format type="text/html"><a href="EC0A8D63-11B3-4ACD-B398-DA1E37E97382">[&lt;topic://cpgrfTypeLibraryImporterTlbimpexe&gt;]</a></format> also applies this attribute to parameters, fields, and return values to indicate that the data type in the input type library is not the default type for the corresponding managed data type. Tlbimp.exe always applies the <see cref="T:System.Runtime.InteropServices.MarshalAsAttribute" /> to <see cref="T:System.String" /> and <see cref="T:System.Object" /> types for clarity, regardless of the type specified in the input type library.</para><block subset="none" type="note"><para>The <see cref="T:System.Runtime.InteropServices.MarshalAsAttribute" /> does not support marshaling of generic types.</para></block></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Indicates how to marshal the data between managed and unmanaged code.</para></summary></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor(int16 unmanagedType)" /><MemberSignature Language="C#" Value="public MarshalAsAttribute (short unmanagedType);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int16 unmanagedType) cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue /><Parameters><Parameter Name="unmanagedType" Type="System.Int16" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>This constructor takes an underlying 16-bit signed integer that represents each <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> enumeration member. The <format type="text/html"><a href="EC0A8D63-11B3-4ACD-B398-DA1E37E97382">[&lt;topic://cpgrfTypeLibraryImporterTlbimpexe&gt;]</a></format>  uses this constructor.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.MarshalAsAttribute" /> class with the specified <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> value.</para></summary><param name="unmanagedType"><attribution license="cc4" from="Microsoft" modified="false" />The value the data is to be marshaled as. </param></Docs><Excluded>0</Excluded></Member><Member MemberName=".ctor"><MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor(valuetype System.Runtime.InteropServices.UnmanagedType unmanagedType)" /><MemberSignature Language="C#" Value="public MarshalAsAttribute (System.Runtime.InteropServices.UnmanagedType unmanagedType);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(valuetype System.Runtime.InteropServices.UnmanagedType unmanagedType) cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue /><Parameters><Parameter Name="unmanagedType" Type="System.Runtime.InteropServices.UnmanagedType" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>For readable code that is less prone to error, always use this constructor.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.MarshalAsAttribute" /> class with the specified <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> enumeration member.</para></summary><param name="unmanagedType"><attribution license="cc4" from="Microsoft" modified="false" />The value the data is to be marshaled as. </param></Docs><Excluded>0</Excluded></Member><Member MemberName="ArraySubType"><MemberSignature Language="ILASM" Value=".field public valuetype System.Runtime.InteropServices.UnmanagedType ArraySubType" /><MemberSignature Language="C#" Value="public System.Runtime.InteropServices.UnmanagedType ArraySubType;" /><MemberSignature Language="ILAsm" Value=".field public valuetype System.Runtime.InteropServices.UnmanagedType ArraySubType" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Runtime.InteropServices.UnmanagedType</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>You can set this parameter to a value from the <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> enumeration to specify the type of the array's elements. If a type is not specified, the default unmanaged type corresponding to the managed array's element type is used. For example, the ArraySubType for a LPWStr array in COM is <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPWStr" />. For additional information, see <format type="text/html"><a href="8A3CCA8B-DD94-4E3D-AD9A-9EE7590654BC">[&lt;topic://cpcondefaultmarshalingforarrays&gt;]</a></format>.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Specifies the element type of the unmanaged <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPArray" /> or <see cref="F:System.Runtime.InteropServices.UnmanagedType.ByValArray" />.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="IidParameterIndex"><MemberSignature Language="C#" Value="public int IidParameterIndex;" /><MemberSignature Language="ILAsm" Value=".field public int32 IidParameterIndex" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Docs><remarks>To be added.</remarks><since version=".NET 2.0" /><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Specifies the parameter index of the unmanaged iid_is attribute used by COM.</para></summary></Docs></Member><Member MemberName="MarshalCookie"><MemberSignature Language="ILASM" Value=".field public string MarshalCookie" /><MemberSignature Language="C#" Value="public string MarshalCookie;" /><MemberSignature Language="ILAsm" Value=".field public string MarshalCookie" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.String</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>This field is optional when using a custom marshaler.</para><para>You can set this field to a string that supplies additional information to a custom marshaler. For example, the same marshaler can be used to provide a number of wrappers, where the cookie is used to indicate the specific wrapper.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Provides additional information to a custom marshaler.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="MarshalType"><MemberSignature Language="ILASM" Value=".field public string MarshalType" /><MemberSignature Language="C#" Value="public string MarshalType;" /><MemberSignature Language="ILAsm" Value=".field public string MarshalType" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.String</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>You can use either the <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalType" /> or <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalTypeRef" /> field specify a custom marshaler type for the attributed parameter, field, or return type. The <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalType" /> field enables you to specify a string representing the fully qualified name of a custom marshaler. It is useful for late-bound references, but is less preferred than <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalTypeRef" /> for specifying a custom marshaler. For additional information about creating and using custom marshalers, see <format type="text/html"><a href="49f9ac47-1619-4d6e-9da6-bf06bba12079">Custom Marshaling</a></format>.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Specifies the fully qualified name of a custom marshaler.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="MarshalTypeRef"><MemberSignature Language="ILASM" Value=".field public class System.Type MarshalTypeRef" /><MemberSignature Language="C#" Value="public Type MarshalTypeRef;" /><MemberSignature Language="ILAsm" Value=".field public class System.Type MarshalTypeRef" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Type</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>You can use either the <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalTypeRef" /> or <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalType" /> field to specify a custom marshaler type for the attributed parameter, field, or return type. The <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalTypeRef" /> field allows easier usage of <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalType" /> by shortening the syntax. In the following example, the first line represents syntax using <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalType" /> and the second line represents syntax using <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalTypeRef" />.</para><code>[MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Assembly, NameSpace.TypeName")] </code><code>[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NameSpace.TypeName)]</code><para>You can set a <see cref="T:System.Type" /> object using typeof in C#, GetType in Visual Basic, or typeid in C++. For additional information about creating and using custom marshalers, see <format type="text/html"><a href="49f9ac47-1619-4d6e-9da6-bf06bba12079">Custom Marshaling</a></format>.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Implements <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.MarshalType" /> as a type.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="SafeArraySubType"><MemberSignature Language="C#" Value="public System.Runtime.InteropServices.VarEnum SafeArraySubType;" /><MemberSignature Language="ILAsm" Value=".field public valuetype System.Runtime.InteropServices.VarEnum SafeArraySubType" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Runtime.InteropServices.VarEnum</ReturnType></ReturnValue><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>You can set this field to a value from the <see cref="T:System.Runtime.InteropServices.VarEnum" /> enumeration to specify the type of the safe array's elements. If a type is not specified, the managed element type's default type (if passed as a VARIANT) is used. For example, the SafeArraySubType for an int array in COM is <see cref="F:System.Runtime.InteropServices.VarEnum.VT_I4" />. For additional information, see <format type="text/html"><a href="8A3CCA8B-DD94-4E3D-AD9A-9EE7590654BC">[&lt;topic://cpcondefaultmarshalingforarrays&gt;]</a></format>.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Indicates the element type of the <see cref="F:System.Runtime.InteropServices.UnmanagedType.SafeArray" />.</para></summary></Docs></Member><Member MemberName="SafeArrayUserDefinedSubType"><MemberSignature Language="C#" Value="public Type SafeArrayUserDefinedSubType;" /><MemberSignature Language="ILAsm" Value=".field public class System.Type SafeArrayUserDefinedSubType" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Type</ReturnType></ReturnValue><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Initialize this field with your custom type to enable the elements of the SAFEARRAY to be marshaled successfully. This field is only needed when the <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.SafeArraySubType" /> is either <see cref="F:System.Runtime.InteropServices.VarEnum.VT_UNKNOWN" />, <see cref="F:System.Runtime.InteropServices.VarEnum.VT_DISPATCH" />, or <see cref="F:System.Runtime.InteropServices.VarEnum.VT_RECORD" />. For additional information, see <format type="text/html"><a href="8A3CCA8B-DD94-4E3D-AD9A-9EE7590654BC">[&lt;topic://cpcondefaultmarshalingforarrays&gt;]</a></format>.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Indicates the user-defined element type of the <see cref="F:System.Runtime.InteropServices.UnmanagedType.SafeArray" />.</para></summary></Docs></Member><Member MemberName="SizeConst"><MemberSignature Language="ILASM" Value=".field public int32 SizeConst" /><MemberSignature Language="C#" Value="public int SizeConst;" /><MemberSignature Language="ILAsm" Value=".field public int32 SizeConst" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>This field is required for the <see cref="F:System.Runtime.InteropServices.UnmanagedType.ByValArray" /> and <see cref="F:System.Runtime.InteropServices.UnmanagedType.ByValTStr" /> members of the <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> enumeration. Because the compressed format of the metadata is limited to 0x1FFFFFFF, the range of allowed values for <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.SizeConst" /> are (&gt;= 0 and &lt;= 0x1FFFFFFF).</para><para>For additional information, see <format type="text/html"><a href="8A3CCA8B-DD94-4E3D-AD9A-9EE7590654BC">[&lt;topic://cpcondefaultmarshalingforarrays&gt;]</a></format>.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Indicates the number of elements in the fixed-length array or the number of characters (not bytes) in a string to import.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="SizeParamIndex"><MemberSignature Language="ILASM" Value=".field public int16 SizeParamIndex" /><MemberSignature Language="C#" Value="public short SizeParamIndex;" /><MemberSignature Language="ILAsm" Value=".field public int16 SizeParamIndex" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Int16</ReturnType></ReturnValue><Parameters /><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.SizeParamIndex" /> field supports managed-to-unmanaged and unmanaged-to-managed calls. It does not have any effect on managed code that calls COM objects.</para><para>Depending on the managed type and the attributes applied to it, the array can be passed as a safe array or C-style array.</para><para>When arrays are passed as C-style arrays, the marshaler cannot determine the size of the array. Therefore, to pass an managed array to an unmanaged function or method, you must provide two arguments:</para><list type="bullet"><item><para>The array, defined by reference or value.</para></item><item><para>The array size, defined by reference or value.</para></item></list><para>The zero-based index of the array size parameter is defined by using the <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.SizeParamIndex" /> field.</para><para>If you specify both <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.SizeParamIndex" /> and <see cref="F:System.Runtime.InteropServices.MarshalAsAttribute.SizeConst" /> with a <see cref="F:System.Runtime.InteropServices.UnmanagedType.LPArray" /> field, the sum of the fields' values produces a size total.</para><para>For more information, see <format type="text/html"><a href="8A3CCA8B-DD94-4E3D-AD9A-9EE7590654BC">[&lt;topic://cpcondefaultmarshalingforarrays&gt;]</a></format>.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Indicates the zero-based parameter that contains the count of array elements, similar to size_is in COM.</para></summary></Docs><Excluded>0</Excluded></Member><Member MemberName="Value"><MemberSignature Language="ILASM" Value=".property valuetype System.Runtime.InteropServices.UnmanagedType Value { public hidebysig specialname instance valuetype System.Runtime.InteropServices.UnmanagedType get_Value() }" /><MemberSignature Language="C#" Value="public System.Runtime.InteropServices.UnmanagedType Value { get; }" /><MemberSignature Language="ILAsm" Value=".property instance valuetype System.Runtime.InteropServices.UnmanagedType Value" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Runtime.InteropServices.UnmanagedType</ReturnType></ReturnValue><Parameters /><Docs><value><para> The <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> value indicating how the data is to
   be marshaled. </para></value><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>This value is used with <see cref="T:System.Runtime.InteropServices.MarshalAsAttribute" /> to indicate how types should be marshaled between managed and unmanaged code. In some cases, you can use this field with certain UnmanagedType enumeration members. For <see cref="F:System.Runtime.InteropServices.UnmanagedType.CustomMarshaler" /> and <see cref="F:System.Runtime.InteropServices.UnmanagedType.ByValArray" />, you must use additional named parameters.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets the <see cref="T:System.Runtime.InteropServices.UnmanagedType" /> value the data is to be marshaled as.</para></summary></Docs><Excluded>0</Excluded></Member></Members><TypeExcluded>0</TypeExcluded></Type>