MarshalAsAttribute MarshalAsAttribute MarshalAsAttribute MarshalAsAttribute Class

定義

マネージド コードとアンマネージド コードとの間のデータのマーシャリング方法を示します。Indicates how to marshal the data between managed and unmanaged code.

public ref class MarshalAsAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MarshalAsAttribute : Attribute
type MarshalAsAttribute = class
    inherit Attribute
Public NotInheritable Class MarshalAsAttribute
Inherits Attribute
継承
MarshalAsAttributeMarshalAsAttributeMarshalAsAttributeMarshalAsAttribute
属性

次の例では、適用、MarshalAsAttributeフィールド、メソッド パラメーター、およびメソッドにするには、マネージ型の値を返します。The following example applies the MarshalAsAttribute to a field, a method parameter, and a method return value in a managed type.

using System;
using System.Text;
using System.Runtime.InteropServices;


class Program
{

//Applied to a parameter.
  public void M1([MarshalAs(UnmanagedType.LPWStr)]String msg) {}


//Applied to a field within a class.
  class MsgText {
                [MarshalAs(UnmanagedType.LPWStr)]
                public String msg = "Hello World";
                }

//Applied to a return value.
[return: MarshalAs(UnmanagedType.LPWStr)]
    public String GetMessage()
    {
        return "Hello World";
    }


static void Main(string[] args)
    {  }
}
Imports System.Runtime.InteropServices

Module Module1

    Sub Main()

    End Sub

    'Applied to a parameter.
    Public Sub M1(<MarshalAsAttribute(UnmanagedType.LPWStr)> ByVal msg As String)
        msg = msg + "Goodbye"
    End Sub

    'Applied to a field within a class.
    Class MsgText
        <MarshalAsAttribute(UnmanagedType.LPWStr)> Public msg As String
    End Class

    'Applied to a return value.
    Public Function M2() As <MarshalAsAttribute(UnmanagedType.LPWStr)> String
        Return "Hello World"
    End Function

End Module

次の例では、適用、MarshalAsAttribute属性をプロパティ。The following example applies the MarshalAsAttribute attribute to a property:

decimal _money;   

public decimal Money 
{
   [return: MarshalAs(UnmanagedType.Currency)]
   get { return this._money; }
   [param: MarshalAs(UnmanagedType.Currency)]
   set { this._money = value; }
}
Dim _money As Decimal   

Public Property Money As <MarshalAs(UnmanagedType.Currency)> Decimal 
   Get
      Return Me._money
   End Get
   Set(<MarshalAs(UnmanagedType.Currency)> value As Decimal)
      Me._money = value
   End Set   
End Property

注釈

この属性を適用するパラメーター、フィールド、または戻り値ことができます。You can apply this attribute to parameters, fields, or return values.

この属性はデータの種類ごとに既定の動作をマーシャ リング オプションです。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. たとえば、いずれかとしてアンマネージ コードに文字列をマーシャ リングする、 LPStrLPWStrLPTStr、またはBStrします。For example, you can marshal a string to unmanaged code as either a LPStr, a LPWStr, a LPTStr, or a BStr. 既定では、共通言語ランタイムは、文字列のパラメーターとしてマーシャ リングします、 BStr COM メソッドにします。By default, the common language runtime marshals a string parameter as a BStr to COM methods. 適用することができます、MarshalAsAttribute属性を個々 のフィールドまたはパラメーターとしてマーシャ リングされる、指定した文字列が、LPStrの代わりに、BStrします。You can apply the MarshalAsAttribute attribute to an individual field or parameter to cause that particular string to be marshaled as a LPStr instead of a BStr. Tlbexp.exe (タイプ ライブラリ エクスポーター)を共通言語ランタイムのマーシャ リングの好みを渡します。The Tlbexp.exe (Type Library Exporter) passes your marshaling preferences to the common language runtime.

いくつかのパラメーターと戻り値は、マーシャ リング動作 COM 相互運用機能を使用すると別の既定値を設定します。 または、プラットフォーム呼び出し。Some parameters and return values have different default marshaling behavior when used with COM interop or platform invoke. 既定では、ランタイムをマーシャ リング文字列パラメーター (と値の型のフィールド) として、LPStrプラットフォームにメソッドまたは関数を呼び出します。By default, the runtime marshals a string parameter (and fields in a value type) as a LPStr to a platform invoke method or function. 詳細については、次を参照してください。既定のマーシャ リング動作します。For additional information, see Default Marshaling Behavior.

ほとんどの場合、属性だけを示しますを使用して、非管理対象データの形式、UnmanagedType列挙型で、次の c# シグネチャで示すようにします。In most cases, the attribute simply identifies the format of the unmanaged data using the UnmanagedType enumeration, as shown in the following C# signature:

public void SomeMethod([MarshalAs(UnmanagedType.LPStr)] String s)
Public Sub SomeMethod(<MarshalAs(UnmanagedType.LPStr)> s As String)

いくつかUnmanagedType列挙型のメンバー追加情報が必要です。Some UnmanagedType enumeration members require additional information. たとえば、追加情報が必要なときに、UnmanagedTypeLPArrayします。For example, additional information is needed when the UnmanagedType is LPArray. 配列でこの属性を使用する方法の詳細については、次を参照してください。配列のマーシャ リング既定します。For a complete description of how to use this attribute with arrays, see Default Marshaling for Arrays.

Tlbimp.exe (タイプ ライブラリ インポーター)パラメーター、フィールド、および入力のタイプ ライブラリでのデータ型は、対応するマネージ データ型の既定の型ではないかを示す戻り値にこの属性も適用されます。The Tlbimp.exe (Type Library Importer) 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 が常に適用されます、MarshalAsAttributeStringObject入力タイプ ライブラリで指定された型に関係なく、わかりやすくするための型。Tlbimp.exe always applies the MarshalAsAttribute to String and Object types for clarity, regardless of the type specified in the input type library.

注意

MarshalAsAttributeはジェネリック型のマーシャ リングをサポートしていません。The MarshalAsAttribute does not support marshaling of generic types.

コンストラクター

MarshalAsAttribute(Int16) MarshalAsAttribute(Int16) MarshalAsAttribute(Int16) MarshalAsAttribute(Int16)

指定した UnmanagedType 値を使用して、MarshalAsAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the MarshalAsAttribute class with the specified UnmanagedType value.

MarshalAsAttribute(UnmanagedType) MarshalAsAttribute(UnmanagedType) MarshalAsAttribute(UnmanagedType) MarshalAsAttribute(UnmanagedType)

指定した MarshalAsAttribute 列挙体メンバーを使用して、UnmanagedType クラスの新しいインスタンスを初期化します。Initializes a new instance of the MarshalAsAttribute class with the specified UnmanagedType enumeration member.

フィールド

ArraySubType ArraySubType ArraySubType ArraySubType

アンマネージの LPArray または ByValArray の要素の型を示します。Specifies the element type of the unmanaged LPArray or ByValArray.

IidParameterIndex IidParameterIndex IidParameterIndex IidParameterIndex

COM で使用されるアンマネージ iid_is 属性のパラメーター インデックスを指定します。Specifies the parameter index of the unmanaged iid_is attribute used by COM.

MarshalCookie MarshalCookie MarshalCookie MarshalCookie

カスタム マーシャラーに追加の情報を提供します。Provides additional information to a custom marshaler.

MarshalType MarshalType MarshalType MarshalType

カスタム マーシャラーの完全修飾名を指定します。Specifies the fully qualified name of a custom marshaler.

MarshalTypeRef MarshalTypeRef MarshalTypeRef MarshalTypeRef

MarshalType を型として実装します。Implements MarshalType as a type.

SafeArraySubType SafeArraySubType SafeArraySubType SafeArraySubType

SafeArray の要素の型を示します。Indicates the element type of the SafeArray.

SafeArrayUserDefinedSubType SafeArrayUserDefinedSubType SafeArrayUserDefinedSubType SafeArrayUserDefinedSubType

SafeArray のユーザー定義要素の型を示します。Indicates the user-defined element type of the SafeArray.

SizeConst SizeConst SizeConst SizeConst

固定長配列の要素の数、またはインポートする文字列の文字数 (バイト数ではない) を示します。Indicates the number of elements in the fixed-length array or the number of characters (not bytes) in a string to import.

SizeParamIndex SizeParamIndex SizeParamIndex SizeParamIndex

COM の size_is のように、0 から始まる配列要素のカウントを格納しているパラメーターを示します。Indicates the zero-based parameter that contains the count of array elements, similar to size_is in COM.

プロパティ

TypeId TypeId TypeId TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Value Value Value Value

マーシャリング後データの UnmanagedType 値を取得します。Gets the UnmanagedType value the data is to be marshaled as.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

適用対象

こちらもご覧ください