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 dışarı aktarırken C# yöntemini PreserveSigAttribute olmadan nasıl dönüştürdüğünü 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ürme ö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] parametresinin işlev dönüş değeri olarak kullanılması için 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. COM üyesinin çoğu HRESULT döndüreceğinden, uygulamasını uygulayarak PreserveSigAttributebaşarı veya başarısızlık HRESULT değerini temsil eden bir tamsayı alabilirsiniz. Tlbexp.exe yönetilen imzada tüm [out, retval] parametrelerini out parametreleri olarak 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.

Note

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ı ile PreserveSigAttribute bu dönüş türlerinden birini kullanmayı denediğinizde, bir TypeLoadException oluşturulur.

Oluşturucular

Name Description
PreserveSigAttribute()

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

Ö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)

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)

Şunlara uygulanır

Ayrıca bkz.