MarshalAsAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yönetilen ve yönetilmeyen kod arasında verilerin nasıl sıralanmış olduğunu gösterir.
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
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnek bir alana, yöntem parametresine ve yönetilen türdeki bir yöntem dönüş değerine uygular MarshalAsAttribute .
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
Aşağıdaki örnek özniteliğini bir özelliğe uygular MarshalAsAttribute :
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
Açıklamalar
Bu özniteliği parametrelere, alanlara veya dönüş değerlerine uygulayabilirsiniz.
Her veri türünün varsayılan hazırlama davranışı olduğundan bu öznitelik isteğe bağlıdır. Bu öznitelik yalnızca belirli bir tür birden çok türe sıralanabilirse gereklidir. Örneğin, yönetilmeyen koda LPStrbir dizeyi , , LPWStrLPTStrBStrveya olarak sıralayabilirsiniz. Varsayılan olarak, ortak dil çalışma zamanı bir dize parametresini COM yöntemleri olarak BStr sıralar. Özniteliğini MarshalAsAttribute tek bir alana veya parametreye uygulayarak bu dizenin LPStryerine olarak BStr sıralanmasına neden olabilirsiniz. Tlbexp.exe (Tür Kitaplığı Verme) sıralama tercihlerinizi ortak dil çalışma zamanına geçirir.
Bazı parametreler ve dönüş değerleri, COM birlikte çalışma veya platform çağrısı ile kullanıldığında farklı varsayılan hazırlama davranışına sahiptir. Varsayılan olarak, çalışma zamanı bir dize parametresini (ve değer türündeki alanları) LPStr platform çağırma yöntemine veya işlevine sıralar. Ek bilgi için bkz . Varsayılan Hazırlama Davranışı.
Çoğu durumda özniteliği, aşağıdaki C# imzasında gösterildiği gibi numaralandırmayı UnmanagedType kullanarak yönetilmeyen verilerin biçimini tanımlar:
public void SomeMethod([MarshalAs(UnmanagedType.LPStr)] String s)
Public Sub SomeMethod(<MarshalAs(UnmanagedType.LPStr)> s As String)
Bazı UnmanagedType numaralandırma üyeleri ek bilgi gerektirir. Örneğin, olduğunda UnmanagedTypeek bilgiler gerekirLPArray. Bu özniteliğin dizilerle nasıl kullanılacağının tam açıklaması için bkz . Diziler için Varsayılan Sıralama.
Tlbimp.exe (Tür Kitaplığı İçeri Aktarıcısı), giriş türü kitaplığındaki veri türünün ilgili yönetilen veri türü için varsayılan tür olmadığını belirtmek için bu özniteliği parametrelere, alanlara ve dönüş değerlerine de uygular. Tlbimp.exe her zaman giriş türü kitaplığında MarshalAsAttributeStringObject belirtilen türe bakılmaksızın ve türlerini netlik için uygular.
Note
MarshalAsAttribute, genel türlerin sıralanmasını desteklemez.
Oluşturucular
| Name | Description |
|---|---|
| MarshalAsAttribute(Int16) |
Belirtilen MarshalAsAttribute değerle sınıfının yeni bir örneğini UnmanagedType başlatır. |
| MarshalAsAttribute(UnmanagedType) |
Belirtilen MarshalAsAttribute numaralandırma üyesiyle sınıfının yeni bir örneğini UnmanagedType başlatır. |
Alanlar
| Name | Description |
|---|---|
| ArraySubType |
Yönetilmeyen LPArray veya ByValArrayöğesinin öğe türünü belirtir. |
| IidParameterIndex |
COM tarafından kullanılan yönetilmeyen |
| MarshalCookie |
Özel bir sıralayıcıya ek bilgi sağlar. |
| MarshalType |
Özel bir sıralayıcının tam adını belirtir. |
| MarshalTypeRef |
Tür olarak uygular MarshalType . |
| SafeArraySubType |
öğesinin öğe türünü SafeArraygösterir. |
| SafeArrayUserDefinedSubType |
öğesinin kullanıcı tanımlı öğe türünü SafeArraygösterir. |
| SizeConst |
Sabit uzunlukta dizideki öğe sayısını veya içeri aktaracak dizedeki karakter sayısını (bayt değil) gösterir. |
| SizeParamIndex |
COM'dakine benzer şekilde dizi öğelerinin sayısını içeren sıfır tabanlı parametreyi |
Özellikler
| Name | Description |
|---|---|
| TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
| Value |
UnmanagedType Verilerin olarak sıralanması gereken değeri alır. |
Yöntemler
| Name | Description |
|---|---|
| Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
| GetHashCode() |
Bu örneğin karma kodunu döndürür. (Devralındığı yer: Attribute) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
| Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler. (Devralındığı yer: Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır. (Devralındığı yer: Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1). (Devralındığı yer: Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından kullanıma sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |