MarshalAsAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Azt jelzi, hogyan lehet az adatokat a felügyelt és a nem felügyelt kód között létrehozni.
public ref class MarshalAsAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue, Inherited=false)]
public sealed class MarshalAsAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MarshalAsAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue, Inherited=false)>]
type MarshalAsAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MarshalAsAttribute = class
inherit Attribute
Public NotInheritable Class MarshalAsAttribute
Inherits Attribute
- Öröklődés
- Attribútumok
Példák
Az alábbi példa egy MarshalAsAttribute mezőre, egy metódusparaméterre és egy felügyelt típusú metódus visszatérési értékére vonatkozik.
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
Az alábbi példa az MarshalAsAttribute attribútumot egy tulajdonságra alkalmazza:
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
Megjegyzések
Ezt az attribútumot paraméterekre, mezőkre vagy visszaadott értékekre alkalmazhatja.
Ez az attribútum nem kötelező, mivel minden adattípus alapértelmezett adatalkotó viselkedéssel rendelkezik. Ez az attribútum csak akkor szükséges, ha egy adott típus több típushoz is hozzárendelhető. Létrehozhat például egy sztringet a nem felügyelt kódra, például egy LPStr, egy LPWStrLPTStrvagy egy BStr. Alapértelmezés szerint a közös nyelvi futtatókörnyezet egy sztringparamétert hoz létre COM-metódusokként BStr . MarshalAsAttribute Az attribútumot alkalmazhatja egy adott mezőre vagy paraméterre, hogy az adott sztringet LPStr a rendszer ahelyett, hogy egy BStr. A Tlbexp.exe (típuskódtár-exportőr) a közös nyelvi futtatókörnyezetre továbbítja a marshaling beállításokat.
Egyes paraméterek és visszatérési értékek eltérő alapértelmezett marshaling viselkedéssel rendelkeznek a COM-interop vagy platformhívások használatakor. A futtatókörnyezet alapértelmezés szerint egy sztringparamétert (és értéktípusú mezőket) alkalmaz platformhívási metódusként vagy függvényként LPStr . További információ: Alapértelmezett marshaling behavior.
Az attribútum a legtöbb esetben egyszerűen azonosítja a nem felügyelt adatok formátumát az UnmanagedType enumerálás használatával, ahogyan az a következő C#-aláírásban is látható:
public void SomeMethod([MarshalAs(UnmanagedType.LPStr)] String s)
Public Sub SomeMethod(<MarshalAs(UnmanagedType.LPStr)> s As String)
Egyes UnmanagedType enumerálási tagok további információkat igényelnek. Például további információra van szükség, ha a UnmanagedTypeLPArray. Az attribútum tömbökkel való használatának teljes leírását a Tömbök alapértelmezett marshaling elemében találhatja meg.
A Tlbimp.exe (Típustár-importáló) ezt az attribútumot paraméterekre, mezőkre és visszatérési értékekre is alkalmazza, jelezve, hogy a bemeneti típusú kódtár adattípusa nem az alapértelmezett típus a megfelelő felügyelt adattípushoz. Tlbimp.exe mindig a bemeneti típustárban megadott típustól függetlenül alkalmazza a MarshalAsAttributeString típusokat és Object a típusokat az egyértelműség érdekében.
Note
Ez MarshalAsAttribute nem támogatja az általános típusok marsallálását.
Konstruktorok
| Name | Description |
|---|---|
| MarshalAsAttribute(Int16) |
Inicializálja az osztály új példányát MarshalAsAttribute a megadott UnmanagedType értékkel. |
| MarshalAsAttribute(UnmanagedType) |
Inicializálja az osztály új példányát MarshalAsAttribute a megadott UnmanagedType enumerálási taggal. |
Mezők
| Name | Description |
|---|---|
| ArraySubType |
A nem felügyelt vagy LPArraya nem felügyelt elem elemtípusát ByValArray adja meg. |
| IidParameterIndex |
A COM által használt nem felügyelt |
| MarshalCookie |
További információt nyújt egy egyéni marsallnak. |
| MarshalType |
Egy egyéni marsall teljes nevét adja meg. |
| MarshalTypeRef |
Típusként implementál MarshalType . |
| SafeArraySubType |
A elemtípusát SafeArrayjelzi. |
| SafeArrayUserDefinedSubType |
A felhasználó által definiált elemtípust jelzi a SafeArray. |
| SizeConst |
A rögzített hosszúságú tömb elemeinek számát vagy az importálandó sztringben szereplő karakterek számát (nem bájt) jelzi. |
| SizeParamIndex |
A COM-hoz hasonló |
Tulajdonságok
| Name | Description |
|---|---|
| TypeId |
Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap. (Öröklődés forrása Attribute) |
| Value |
Lekéri azt az UnmanagedType értéket, amelyet az adatoknak a következőképpen kell létrehozniuk. |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal. (Öröklődés forrása Attribute) |
| GetHashCode() |
A példány kivonatkódját adja vissza. (Öröklődés forrása Attribute) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| IsDefaultAttribute() |
Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke. (Öröklődés forrása Attribute) |
| Match(Object) |
Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e. (Öröklődés forrása Attribute) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). (Öröklődés forrása Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. (Öröklődés forrása Attribute) |