Udostępnij za pośrednictwem


Stosowanie atrybutów Interop

System.Runtime.InteropServices Przestrzeń nazw zawiera trzy kategorie atrybutów specyficznych dla interoperacyjności: zastosowane przez użytkownika w czasie projektowania, stosowane przez narzędzia i interfejsy API interoperacyjności COM podczas procesu konwersji oraz te stosowane albo przez użytkownika, albo przez interoperacyjność COM.

Jeśli nie znasz zadania stosowania atrybutów do kodu zarządzanego, zobacz Rozszerzanie metadanych przy użyciu atrybutów. Podobnie jak inne atrybuty niestandardowe, można stosować atrybuty specyficzne dla interoperacyjności do typów, metod, właściwości, parametrów, pól i innych elementów członkowskich.

Design-Time Atrybuty

Możesz dostosować wynik procesu konwersji wykonywanego przez narzędzia i interfejsy API międzyoperacyjności COM przy użyciu atrybutów dla czasu projektowania. W poniższej tabeli opisano atrybuty, które można zastosować do zarządzanego kodu źródłowego. Narzędzia międzyoperacyjności COM mogą od czasu do czasu również stosować atrybuty opisane w tej tabeli.

Atrybut Opis
AutomationProxyAttribute Określa, czy typ ma być przetwarzany przy użyciu marshaler Automation lub niestandardowego serwera proxy i szkieletu.
ClassInterfaceAttribute Określa typ interfejsu wygenerowanego dla klasy.
CoClassAttribute Identyfikuje identyfikator CLSID oryginalnej coklasy importowanej z biblioteki typów.

Narzędzia międzyoperacowe modelu COM zwykle stosują ten atrybut.
ComImportAttribute Wskazuje, że coclass lub definicja interfejsu została zaimportowana z biblioteki typów COM. Środowisko uruchomieniowe używa tej flagi do poznania sposobu aktywowania i marshalingu typu. Ten atrybut uniemożliwia eksportowanie typu z powrotem do biblioteki typów.

Narzędzia międzyoperacowe modelu COM zwykle stosują ten atrybut.
ComRegisterFunctionAttribute Wskazuje, że należy wywołać metodę, gdy zestaw jest zarejestrowany do użycia z modelu COM, aby można było wykonać kod napisany przez użytkownika podczas procesu rejestracji.
ComSourceInterfacesAttribute Identyfikuje interfejsy, które są źródłami zdarzeń dla klasy.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
ComUnregisterFunctionAttribute Wskazuje, że metoda powinna być wywoływana, gdy zestaw jest wyrejestrowany z modelu COM, aby kod napisany przez użytkownika mógł zostać wykonany podczas procesu.
ComVisibleAttribute Renderuje typy niewidoczne dla modelu COM, gdy wartość atrybutu jest równa false. Ten atrybut można zastosować do pojedynczego typu lub do całego zestawu w celu kontrolowania widoczności COM. Domyślnie wszystkie zarządzane typy publiczne są widoczne; atrybut nie jest potrzebny, aby były widoczne.
DispIdAttribute Określa identyfikator dyspozytora COM (DISPID) metody lub pola. Ten atrybut zawiera identyfikator DISPID dla metody, pola lub właściwości, która opisuje.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
ComDefaultInterfaceAttribute Wskazuje interfejs domyślny dla klasy COM zaimplementowanej na platformie .NET.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
FieldOffsetAttribute Wskazuje fizyczne położenie każdego pola w klasie, gdy jest używane z atrybutem StructLayoutAttribute, a właściwość LayoutKind jest ustawiona na Jawne.
GuidAttribute Określa globalnie unikatowy identyfikator (GUID) klasy, interfejsu lub całej biblioteki typów. Ciąg przekazany do atrybutu musi być formatem, który jest akceptowalnym argumentem konstruktora dla typu System.Guid.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
IDispatchImplAttribute Wskazuje, która implementacja interfejsu IDispatch jest używana przez środowisko uruchomieniowe języka wspólnego podczas uwidaczniania podwójnych interfejsów i dispinterfaces w modelu COM.
InAttribute Wskazuje, że dane powinny być przeniesione do wywołującego. Może być używane do przypisywania parametrów.
InterfaceTypeAttribute Kontroluje sposób, w jaki zarządzany interfejs jest uwidaczniany dla klientów COM (Dual, pochodne IUnknown lub tylko IDispatch).

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
LCIDConversionAttribute Wskazuje, że sygnatura metody niezarządzanej oczekuje parametru LCID.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
MarshalAsAttribute Wskazuje sposób, w jaki dane w polach lub parametrach powinny być rozdzielane między kodem zarządzanym i niezarządzanym. Atrybut jest zawsze opcjonalny, ponieważ każdy typ danych ma domyślne zachowanie marshallingu.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
OptionalAttribute Wskazuje, że parametr jest opcjonalny.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
OutAttribute Wskazuje, że dane w polu lub parametrze muszą być przekazywane z obiektu wywołanego do obiektu wywołującego.
PreserveSigAttribute Pomija przekształcenie podpisu HRESULT lub retval, które normalnie ma miejsce podczas wywołań międzyoperacyjnych. Atrybut ma wpływ na marshalling, a także eksportowanie biblioteki typów.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.
ProgIdAttribute Określa wartość ProgID klasy .NET. Może służyć do atrybutów klas.
StructLayoutAttribute Steruje fizycznym układem pól klasy.

Narzędzia międzyoperacyjne modelu COM mogą stosować ten atrybut.

Conversion-Tool Atrybuty

W poniższej tabeli opisano atrybuty stosowane przez narzędzia międzyoperacyjności COM podczas procesu konwersji. Te atrybuty nie są stosowane w czasie projektowania.

Atrybut Opis
ComAliasNameAttribute Wskazuje alias COM dla parametru lub typu pola. Może służyć do atrybutów parametrów, pól lub zwracanych wartości.
ComConversionLossAttribute Wskazuje, że informacje o klasie lub interfejsie zostały utracone podczas importowania ich z biblioteki typów do zestawu.
ComEventInterfaceAttribute Identyfikuje interfejs źródłowy i klasę, która implementuje metody interfejsu zdarzenia.
ImportedFromTypeLibAttribute Wskazuje, że zestaw został pierwotnie zaimportowany z biblioteki typów COM. Ten atrybut zawiera definicję oryginalnej biblioteki typów.
TypeLibFuncAttribute Zawiera FUNCFLAGS, które zostały pierwotnie zaimportowane dla tej funkcji z biblioteki typów COM.
TypeLibTypeAttribute Zawiera TYPEFLAGS, które zostały pierwotnie zaimportowane dla tego typu z biblioteki typów COM.
TypeLibVarAttribute Zawiera VARFLAGS, które zostały pierwotnie zaimportowane dla tej zmiennej z biblioteki typów COM.

Zobacz także