Bagikan melalui


ManagedToNativeComInteropStubAttribute Kelas

Definisi

Menyediakan dukungan untuk penyesuaian pengguna dari tikungan interop dalam skenario interop managed-to-COM.

public ref class ManagedToNativeComInteropStubAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
Public NotInheritable Class ManagedToNativeComInteropStubAttribute
Inherits Attribute
Warisan
ManagedToNativeComInteropStubAttribute
Atribut

Keterangan

Atribut ini memungkinkan pengembang interop yang memiliki pengetahuan tentang marshaling dan pekerjaan dalam panggilan interop untuk melakukan hal berikut:

  • Manfaatkan stub interop yang disesuaikan pada waktu build alih-alih run time.

  • Debug interop stub yang disesuaikan.

  • Berikan kemampuan marshaling dalam tikungan yang tidak disediakan runtime.

  • Menyediakan kemampuan pengiriman metode khusus pengguna.

Anda menerapkan atribut pada metode dalam antarmuka untuk menentukan metode stub yang sesuai untuk interop COM terkelola ke asli.

Jika atribut ini ditemui selama runtime bahasa umum, runtime bahasa umum tidak secara dinamis menghasilkan stub interop. Sebaliknya, ini memanggil tinta kustom yang dibuat pada waktu build.

Atribut ManagedToNativeComInteropStubAttribute memiliki karakteristik berikut:

  • Atribut hanya dapat digunakan pada metode dari antarmuka yang ditandai [ComImport]. Jika atribut diterapkan ke jenis non-antarmuka, atribut diabaikan oleh runtime.

  • Atribut hanya dapat digunakan sekali pada metode yang sama dalam antarmuka. Jika digunakan lebih dari sekali, pengkompilasi menghasilkan kesalahan atribut duplikat.

  • Atribut tidak dapat diwariskan dari antarmuka dasar. Antarmuka turunan harus secara eksplisit menetapkan atribut .

  • Rakitan yang berisi metode yang diatribusikan juga harus berisi rakitan yang disesuaikan.

Metode stub yang kelebihan beban valid. Meskipun Anda hanya menentukan jenis dan nama metode stub, runtime akan menemukan rintihan yang sesuai. Ini dilakukan dengan memeriksa semua argumen pada metode antarmuka, dan kemudian melakukan pencocokan tanda tangan penuh dengan menggunakan penunjuk eksplisit this .

Dimungkinkan juga bagi beberapa metode dalam antarmuka untuk berbagi metode stub yang sama; namun, Anda harus berhati-hati ketika anda menggunakan stub bersama.

Catatan

Metode stub harus statis.

Anda dapat menginformasikan runtime untuk menggunakan stub interop yang disesuaikan pada waktu build alih-alih run time dengan kode C# berikut:

[ComImport]  
interface IMyInterface  
{  
    [ManagedToNativeComInteropStubAttribute(typeof(TestStubClass),  
              "ForwardTestStub")]  
    void GetString (string arg);  
}  

Anda kemudian dapat menggunakan kode berikut untuk mendeklarasikan metode stub yang sesuai:

class TestStubClass  
{  
    internal static void ForwardTestStub(IMyInterface thisObject,  
             string arg) {…}  
}  

Konstruktor

ManagedToNativeComInteropStubAttribute(Type, String)

Menginisialisasi instans ManagedToNativeComInteropStubAttribute baru kelas dengan jenis kelas dan nama metode yang ditentukan.

Properti

ClassType

Mendapatkan kelas yang berisi metode stub yang diperlukan.

MethodName

Mendapatkan nama metode stub.

TypeId

Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute.

(Diperoleh dari Attribute)

Metode

Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
GetHashCode()

Mengembalikan kode hash untuk instans ini.

(Diperoleh dari Attribute)
GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
IsDefaultAttribute()

Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan.

(Diperoleh dari Attribute)
Match(Object)

Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

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

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

(Diperoleh dari Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

(Diperoleh dari Attribute)

Berlaku untuk