Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Interoperabilita umožňuje zachovat stávající investice do nespravovaného kódu a využívat je. Kód, který běží pod kontrolou modulu CLR (Common Language Runtime), je spravovaný kód a kód, který běží mimo CLR, je nespravovaný kód. Příkladem nespravovaného kódu jsou komponenty COM, COM+, C++, komponenty ActiveX a rozhraní MICROSOFT Windows API.
.NET umožňuje interoperabilitu s nespravovaným kódem prostřednictvím platformově volání (P/Invoke), prostoru názvů System.Runtime.InteropServices, interoperability jazyka C++ a interoperability s modelem COM (COM interop).
Volání platformy
Vyvolání platformy je služba, která umožňuje spravovanému kódu volat nespravované funkce implementované v knihovnách dynamického propojení (DLL), jako je Microsoft Windows API. Vyhledá a vyvolá exportovanou funkci a podle potřeby zařadí její argumenty (celá čísla, řetězce, pole, struktury atd.) přes hranici interoperace.
Další informace naleznete v tématu Využívání nespravovaných funkcí knihovny DLL a použití volání platformy k přehrání souboru WAV.
Poznámka:
Modul CLR ( Common Language Runtime ) spravuje přístup k systémovým prostředkům. Volání nespravovaného kódu, který je mimo CLR, obchází tento mechanismus zabezpečení, a proto představuje bezpečnostní riziko. Nespravovaný kód může například volat prostředky přímo v nespravovaném kódu a obejít mechanismy zabezpečení CLR. Další informace naleznete v tématu Zabezpečení v .NET.
Interop C++
K zabalení nativní třídy C++ můžete použít interoperabilitu jazyka C++, označovanou také jako It Just Works (IJW). Interoperabilita jazyka C++ umožňuje přístup k kódu vytvořenému v jazyce C# nebo jinému jazyku .NET. Napíšete kód C++, který zabalí nativní knihovnu DLL nebo komponentu COM. Na rozdíl od jiných jazyků .NET má Visual C++ podporu interoperability, která umožňuje spravovaný a nespravovaný kód ve stejné aplikaci a dokonce i ve stejném souboru. Kód jazyka C++ pak sestavíte pomocí přepínače kompilátoru /clr k vytvoření spravovaného sestavení. Nakonec přidáte odkaz na sestavení v projektu C# a použijete zabalené objekty stejně jako jiné spravované třídy.
Zveřejnění komponent modelu COM pro C#
Komponentu COM můžete využívat z projektu C#. Obecné kroky jsou následující:
- Vyhledejte komponentu COM, která se má použít, a zaregistrujte ji. Pomocí regsvr32.exe zaregistrujte nebo zrušte registraci knihovny COM DLL.
- Přidejte do projektu odkaz na komponentu COM nebo knihovnu typů. Když přidáte odkaz, Visual Studio použije Tlbimp.exe (Type Library Importer), který přebírá knihovnu typů jako vstup, aby vytvořil sestavení interoperability .NET. Sestavení, označované také jako obálka s možností volatelného modulu runtime (RCW), obsahuje spravované třídy a rozhraní, které zabalují třídy modelu COM a rozhraní, které jsou v knihovně typů. Visual Studio přidá do projektu odkaz na vygenerované sestavení.
- Vytvořte instanci třídy definované ve verzi RCW. Vytvoření instance této třídy vytvoří instanci objektu COM.
- Objekt používejte stejně jako jiné spravované objekty. Když je objekt uvolněn automatickým uvolňováním paměti, instance objektu COM je také uvolněna z paměti.
Více informací najdete v části Vystavení komponent modelu COM rozhraní .NET Framework.
Propojení jazyka C# s COM
Klienti modelu COM mohou používat typy C#, které byly správně zveřejněny. Základní kroky pro zveřejnění typů jazyka C# jsou následující:
- Přidejte do projektu jazyka C# atributy vzájemné spolupráce. Sestavení COM můžete učinit viditelným úpravou vlastností projektu jazyka C#. Další informace naleznete v dialogovém okně Informace o sestavení.
- Vygenerujte knihovnu typů modelu COM a zaregistrujte ji pro použití modelu COM.
Vlastnosti projektu C# můžete upravit tak, aby automaticky registrovalo sestavení C# pro COM interop. Visual Studio používá Regasm.exe (nástroj pro registraci sestavení) pomocí
/tlbpřepínače příkazového řádku, který přebírá spravované sestavení jako vstup, k vygenerování knihovny typů. Tato knihovna typů popisujepublictypy v sestavení a přidává záznamy registru, čímž umožňuje COM klientům vytvářet spravované třídy.
Další informace naleznete v tématu Zveřejnění komponent rozhraní .NET Framework modelu COM a příklad třídy COM.