Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Belirtilen imzaya sahip bir yöntem veya genel işlev için bir tanım oluşturur ve bu yöntem tanımına bir belirteç döndürür.
Syntax
HRESULT DefineMethod (
[in] mdTypeDef td,
[in] LPCWSTR szName,
[in] DWORD dwMethodFlags,
[in] PCCOR_SIGNATURE pvSigBlob,
[in] ULONG cbSigBlob,
[in] ULONG ulCodeRVA,
[in] DWORD dwImplFlags,
[out] mdMethodDef *pmd
);
Parameters
td [in] mdTypedef Yönteminin üst sınıfının veya üst arabiriminin belirteci.
mdTokenNilGenel işlev tanımlıyorsanız olarak ayarlayıntd.
szName [in] Unicode'da üye adı.
dwMethodFlags [in] Yöntemin veya genel işlevin özniteliklerini belirten CorMethodAttr sabit listesi değeri.
pvSigBlob [in] Yöntem imzası. İmza, sağlanan şekilde kalıcı hale gelir. Herhangi bir parametre için ek bilgi belirtmeniz gerekiyorsa , IMetaDataEmit::SetParamProps yöntemini kullanın.
cbSigBlob [in] içindeki pvSigBlobbayt sayısı.
ulCodeRVA [in] Kodun adresi.
dwImplFlags [in] Yönteminin uygulama özelliklerini belirten CorMethodImpl sabit listesinin değeri.
pmd [out] Üye belirteci.
Remarks
Meta veri API'si, yöntemleri çağıranın parametrede belirtilen belirli bir kapsayan sınıf veya arabirim için yaydığı sırada kalıcı hale getirmek için td garanti eder.
ve belirli parametre ayarlarının DefineMethod kullanımıyla ilgili ek bilgiler aşağıda verilmiştir.
V tablosundaki yuvalar
Çalışma zamanı, v-tablo yuvalarını ayarlamak için yöntem tanımlarını kullanır. COM arabirimi düzeniyle eşliği korumak gibi bir veya daha fazla yuvanın atlanması gerektiğinde, v tablosundaki yuvayı veya yuvaları almak için sahte bir yöntem tanımlanır; dwMethodFlagsmdRTSpecialNameöğesini CorMethodAttr sabit listesi değerine ayarlayın ve adı şu şekilde belirtin:
<_VtblGapSequenceNumber><_CountOfSlots>
burada SequenceNumber yöntemin sıra numarasıdır ve CountOfSlots , v-tablosunda atlanacak yuva sayısıdır. CountOfSlots atlanırsa, 1 varsayılır. Bu sahte yöntemler yönetilen veya yönetilmeyen koddan çağrılamaz ve yönetilen veya yönetilmeyen koddan bunları çağırma girişimi bir özel durum oluşturur. Tek amaçları, çalışma zamanının COM tümleştirmesi için oluşturduğu v tablosunda yer kaplamaktır.
Duplicate Methods
Yinelenen yöntemler tanımlamamalısınız. Başka bir ifadeyle, , ve parametrelerinde tdyinelenen bir değer kümesiyle çağırmamalısınızDefineMethod. wzNamepvSig (Bu üç parametre birlikte yöntemini benzersiz olarak tanımlar.). Ancak, yöntem tanımlarından biri için biti parametresinde dwMethodFlags ayarlamanız mdPrivateScope koşuluyla yinelenen üçlü kullanabilirsiniz. (Bit, mdPrivateScope derleyicinin bu yöntem tanımına başvuru göndermeyeceği anlamına gelir.)
Yöntem Uygulama Bilgileri
Yöntem uygulaması hakkındaki bilgiler genellikle yöntem bildirildiğinde bilinmez. Bu nedenle, çağrılırken DefineMethodve dwImplFlags parametrelerindeki ulCodeRVA değerleri geçirmeniz gerekmez. Değerler daha sonra IMetaDataEmit::SetMethodImplFlags veya IMetaDataEmit::SetRVA aracılığıyla uygun şekilde sağlanabilir.
Platform çağırma (PInvoke) veya COM birlikte çalışma senaryoları gibi bazı durumlarda, yöntem gövdesi sağlanmaz ve ulCodeRVA sıfır olarak ayarlanmalıdır. Bu gibi durumlarda çalışma zamanı uygulamayı bulacağından yöntemi soyut olarak etiketlenmemelidir.
PInvoke için Yöntem Tanımlama
Yönetilmeyen her işlevin PInvoke aracılığıyla çağrılması için, hedef yönetilmeyen işlevi temsil eden bir yönetilen yöntem tanımlamanız gerekir. Yönetilen yöntemi tanımlamak için PInvoke'un kullanılma şekline bağlı olarak bazı parametreler belirli değerlere ayarlanmış olarak kullanın DefineMethod :
True PInvoke - Yönetilmeyen DLL'de bulunan bir dış yönetilmeyen yöntemin çağrılması içerir.
Yerel PInvoke - Geçerli yönetilen modüle eklenmiş yerel yönetilmeyen bir yöntemi çağırmayı içerir.
Parametre ayarları aşağıdaki tabloda verilmiştir.
| Parameter | True PInvoke için değerler | Yerel PInvoke değerleri |
|---|---|---|
dwMethodFlags |
Ayarla mdStatic; clear mdSynchronized ve mdAbstract. |
|
pvSigBlob |
Geçerli yönetilen türler olan parametrelerle geçerli bir ortak dil çalışma zamanı (CLR) yöntemi imzası. | Geçerli yönetilen türler olan parametrelerle geçerli bir CLR yöntemi imzası. |
ulCodeRVA |
0 | |
dwImplFlags |
ve'i miManagedayarlayınmiCil. |
ve'i miUnmanagedayarlayınmiNative. |
Requirements
Platform: Bkz. .NET tarafından desteklenen işletim sistemleri.
Header: Cor.h
Library: CorGuids.lib