Aracılığıyla paylaş


PreserveSigAttribute Sınıf

Tanım

COM birlikte çalışma çağrıları sırasında gerçekleşen HRESULT imza dönüştürmesinin gizlenmesi gerektiğini gösterir.

public ref class PreserveSigAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class PreserveSigAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PreserveSigAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type PreserveSigAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PreserveSigAttribute = class
    inherit Attribute
Public NotInheritable Class PreserveSigAttribute
Inherits Attribute
Devralma
PreserveSigAttribute
Öznitelikler

Örnekler

Aşağıdaki örnek, Tlbexp.exe bir derlemeyi COM tür kitaplığına aktarırken C# yöntemini PreserveSigAttribute nasıl dönüştürmeyi gösterir.

Yönetilen imza:

int DoSomething (long l);  

Yönetilmeyen imza:

HRESULT DoSomething ([in] long l, [out, retval] int * i);  

Aynı C# yöntemine uyguladığınızda PreserveSigAttribute ve derlemeyi dışarı aktardığınızda, yöntem dönüştürmesi önceki örnekten farklıdır. Tlbexp.exe HRESULT ve [out, retval] parametre değiştiricisini kaldırdığını fark edin.

Yönetilen imza:

[PreserveSig] int DoSomething (long l);  

Yönetilmeyen imza:

int DoSomething ([in] long l);  

Açıklamalar

Bu özniteliği yöntemlere uygulayabilirsiniz.

Varsayılan olarak ,Tlbexp.exe (Tür Kitaplığı Verme) S_OK HRESULT döndüren bir çağrının[out, retval] parametresi işlev dönüş değeri olarak kullanılacak şekilde dönüştürülmesini sağlar. S_OK HRESULT atılır. S_OK dışındaki HRESULTs için çalışma zamanı bir özel durum oluşturur ve [out, retval] parametresini atar. öğesini yönetilen yöntem imzasına uyguladığınızda PreserveSigAttribute , öznitelikli yöntemin yönetilen ve yönetilmeyen imzaları aynıdır.

Üye birden fazla başarılı HRESULT değeri döndürüyorsa ve farklı değerleri algılamak istiyorsanız özgün yöntem imzasını korumak gerekir. ÇOĞU COM üyesi hresult döndüreceğinden, uygulayarak PreserveSigAttributebaşarı veya başarısızlık HRESULT temsil eden bir tamsayı alabilirsiniz. Tlbexp.exe yönetilen imzada out parametreleri olarak [out, retval] parametrelerini korur.

Tlbimp.exe (Tür Kitaplığı İçeri Aktarıcısı) da bu özniteliği uygular; bir tür kitaplığını içeri aktardığında dispinterfaces özniteliğini uygular.

Not

COM'dan Currencyyönetilen koda birlikte çalışma gerçekleştiğinde ve Object yönetilen kod sınıfıyla PreserveSigAttribute işaretlendiğinde , Guidve dönüş türleri sınıfı tarafından PreserveSigAttribute desteklenmez. Bu koşullar sırasında sınıfıyla PreserveSigAttribute bu dönüş türlerinden birini kullanmayı denediğinizde, bir TypeLoadException oluşturulur.

Oluşturucular

PreserveSigAttribute()

PreserveSigAttribute sınıfının yeni bir örneğini başlatır.

Özellikler

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini 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 Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_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 sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ayrıca bkz.