// ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΊΠ»Π°ΡΡΡ DataAccess ΠΏΠΎ ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ
CustomerTable objCustomerTable;
objCustomerTable = new CustomerTable();
IDE VS.NET Π±ΡΠ΄Π΅Ρ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Intellisense, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
Intellisense ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ»Π΅Π½Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° DLL COM ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° References, IDE VS.NET Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π° ΡΡΠ΅Π½ΠΎΠΉ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΡΠΎΠΊΡΠΈ .NET Π΄Π»Ρ DLL COM ΠΈ ΠΊΠΎΠΏΠΈΡ DLL COM ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΎΠ΅ΠΊΡΠ° .NET.
ΠΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ .NET ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΌΠΈ ΡΠ΅Π±Ρ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ COM Ρ ΡΠ°Π½ΡΡ ΡΠ²ΠΎΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π΅ΡΡΡΠ΅. ΠΡΠΎΠΊΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ IDE VS.NET, ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ DLL COM ΠΈ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ Π½Π΅Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π΅Π»Π΅Π³Π°ΡΠ°, ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Ρ Π²ΡΠ·ΠΎΠ²Ρ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° .NET ΡΠ΅ΡΠ΅Π· ΡΠ»ΡΠΆΠ±Ρ COM Π² DLL COM, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π΅Ρ. ΠΠ»ΠΈΠ΅Π½Ρ .NET Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ COM; ΠΎΠ½ ΠΎΠ±ΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΡΠΎΠΊΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ· DLL COM.
Π ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ .NET ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠΊΡΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΈΠ»ΠΈ RCW. IDE ΡΠΎΠ·Π΄Π°Π΅Ρ DLL, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ COM, Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ .NET RCW, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ .NET ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ .NET, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½ΡΡΡ. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: IDE VS.NET ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ DLL COM, Π½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ DLL COM, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠ»Π°Π΅ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ DLL COM Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΎΡΠΊΡΡΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΡΠ°ΠΉΠ» ADODB.dll, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π² DataAccess.dll ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΡΠ»ΠΊΠ°.
Π ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ DLL COM, DataAccess.dll ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠ΅ΠΉ ADO, ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° COM ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠΈΠΏΠΎΠ² ADO. ΠΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ DataAccess.dll ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ RCW Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° COM ADO.
TlbImp.exe
ΠΠΏΠ°ΡΠ½ΠΎ Π»ΠΈ Π΄Π»Ρ RCW, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ IDE VS.NET, ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ DLL COM? Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Π½Π° Π΄ΡΡΠ³ΡΡ, Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΡΠ°ΡΡ RCW Ρ DLL COM, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ, ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» DLL COM. ΠΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ RCW Π² ΡΠ»ΡΠΆΠ±Π°Ρ COM, ΡΠ΄ΠΈΠ²Π»ΡΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ (regsvr32.exe) Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ TlbImp.exe. ΠΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ SDK .NET ΡΡΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΠΊΡΠΈ .NET Π΄Π»Ρ DLL COM. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ TlbImp.exe Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ out, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉΡΡ RCW ΠΈΠΌΠ΅Π» ΠΈΠΌΡ, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ DLL COM.
TlbImp ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ Type Library Importer (ΠΠΌΠΏΠΎΡΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ²). ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ DLL COM ΠΎΠ½Π° Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠΈΠΏΠΎΠ² DLL COM ΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡΡΡΠ΄Π° Π² ΡΠΎΡΠΌΠ°Ρ .NET, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ COM Π² ΡΠΈΠΏΡ, ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π΅ΠΌΡΠ΅ .NET. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ TlbImp.exe Π΄Π»Ρ DLL COM, ΡΠ°ΠΉΠ» Π²ΡΠ²ΠΎΠ΄Π° (RCW) ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΠΏΠΊΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. (ΠΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π³, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΡΠΈ ΡΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ TlbImp.exe Π²ΠΌΠ΅ΡΡΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° References Π² IDE.) Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ TlbImp.exe Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ DLL COM, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, ΡΡΠΎ ΠΈ TlbImp, Π½ΠΎ TlbImp.exe ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Ρ.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΉΠ» Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ°.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎ TlbImp.exe ΠΈ RCW. ΠΠ΅ΡΠ²ΠΎΠ΅: Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π·Π°Π΄Π°Π²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ out ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ TlbImp.exe. ΠΡΠ»ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎΠ³ΠΎ, ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° TlbImp.exe Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠ²Π»ΡΡΡ, ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ»:
ΠΡΠΎΡΠΎΠ΅: ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Ρ ΠΎΡΡ RCW ΡΠ»ΡΠΆΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ COM ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ .NET, ΠΊΠΎΡΠΎΡΡΠΉ Π΅Π³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ COM. Π’ΠΎ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ ΠΆΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° COM, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π·Π°Π²Π΅ΡΠ½ΡΡΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ COM ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π΄ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ»ΡΠΆΠ±Π°Ρ COM. ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠΎΡΠ»Π°ΡΡΡΡ Π½Π° Π½Π΅Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ COM, ΡΠΎ IDE VS.NET Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
Π§ΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ COM β regsvr32.exe. ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΈΠ· Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Windows Run, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΈΠ· ΠΌΠ΅Π½Ρ Start ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°.
ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ COM.
ΠΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ COM
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ·Π½Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡΠ². Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ².
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ°Π½Π½ΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ·Π½Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠ°Π½Π½Π΅ΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ/Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ β Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° (ΡΠ°Π½Π½ΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ ΠΊ Π°Π΄ΡΠ΅ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈ Π±Π΅Π·ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ COM ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°Π½Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅.
Π‘ΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ·Π½Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ° ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π° ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ/Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π² ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ. ΠΠΎΠ΄ Ρ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ object, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π₯ΠΎΡΡ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ, ΠΎΠ½ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ.
ΠΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² C# (ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²; ΡΠΌ. Π³Π»Π°Π²Ρ 5.)
ΠΡΠΈ ΠΏΠΎΠ·Π΄Π½Π΅ΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ COM Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ C# Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ RCW Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° COM. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° GetTypeFromProgID ΠΊΠ»Π°ΡΡΠ° Type Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° COM. ΠΠ»Π°ΡΡ Type ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ System.Runtime.InteropServices ΠΈ Π² ΠΊΠΎΠ΄Π΅ Π½ΠΈΠΆΠ΅ ΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Type Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° COM Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ :
using System.Runtime.InteropServices;
Type objCustomerTableType;
objCustomerTableType = Type.GetTypeFromProgID("DataAccess.CustomerTable");
ΠΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Type, ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΡΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° COM, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° COM. ΠΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Type Π² ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° CreateInstance ΠΊΠ»Π°ΡΡΠ° Activator.CreateInstance ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° COM ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π° Π½Π΅Π³ΠΎ ΡΡΡΠ»ΠΊΡ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΡΡΡΠ»ΠΊΠ΅ ΡΠΈΠΏΠ° object.
object objCustomerTable;
objCustomerTable = Activator.CreateInstance(objCustomerTableType);
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΊΠΎΠ΄ C# ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ»ΠΊΡ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π½Π° Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° COM.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΡΡΡΠ»ΠΊΠ΅ ΡΠΈΠΏΠ° object. Π§ΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ COM, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ InvokeMember ΠΎΠ±ΡΠ΅ΠΊΡΠ° Type, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π²Π½Π°ΡΠ°Π»Π΅. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° InvokeMember Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ COM Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° COM, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΏΠ° object Π²ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°.
ObjCustomerTableType.InvokeMember("Delete", BindingFlags.InvokeMethod, null, objCustomerTable, aryInputArgs);
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
1. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Type Π΄Π»Ρ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° COM Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ° Type.GetTypeFromProgID().
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Type Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° COM Ρ ΠΏΠΎΠΌΠΎΡΡΡ Activator.CreateInstance().
3. ΠΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ COM, Π²ΡΠ·ΡΠ²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ InvokeMember Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Type ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π² Π½Π΅Π³ΠΎ ΡΡΡΠ»ΠΊΡ object Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΠΉ Π²ΡΠ΅ ΡΡΠΎ Π² ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ:
using System.Runtime.InteropServices;
Type objCustomerTableType;
object objCustomerTable;
objCustomerTableType=Type.GetTypeFromProgID("DataAccess.CustomerTable");
objCustomerTable=Activator.CreateInstance(ObjCustomerTableType);
objCustomerTableType.InvokeMember("Delete", BindingFlags, InvokeMethod, null, objCustomerTable, aryInputArgs);
objCustomerTableType = Type.GetTypeFromProgID("DataAccess.CustomerTable");
Π₯ΠΎΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ C# ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ RCW, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΡΠΈΠΌ, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ .