ΠΠΠΠΠ 12. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ²
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΡΡΠ΅Π΄Π΅ .NET. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Visual Studio 2005 ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠΈΠΏΡ ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ildasm.exe, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ CIL-ΠΊΠΎΠ΄, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° .NET, ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ ΡΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° .NET, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡ ΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ System.Reflection. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ ΠΌΡ Π²ΡΡΡΠ½ΠΈΠΌ ΡΠΎΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ .NET.
Π ΠΎΡΡΠ°Π²ΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈ Π³Π»Π°Π²Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ΄ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΎΡΠ½ΠΎΡΡΡΠΈΡ ΡΡ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ .NET-ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ²., ΠΎ ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ .NET ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ (Π΄Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΈΠ·Π»ΠΈΡΠ½Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π³Π»Π°Π²Π° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ "Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ " ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows.Form.
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΠΎΠ²
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² (ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΡΡΡΡΠΊΡΡΡ, ΠΏΠ΅ΡΠ΅ΡΠ½Π΅ΠΉ ΠΈ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ²) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET. ΠΠ½ΠΎΠ³ΠΈΠ΅ .NET-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ .NET ΠΈ Web-ΡΠ΅ΡΠ²ΠΈΡΡ XML, ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΡΠ½ΠΈΡΡ ΡΠΎΡΠΌΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ². ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΡΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ IntelliSense ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΆΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ².
ΠΠ°ΠΆΠ½ΠΎΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π° ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ .NET Framework. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java, CORBA ΠΈ COM ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ COM, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ COM-ΡΠΈΠΏΠΎΠ² (ΠΏΠΎ ΡΡΡΠΈ, ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ IDL-ΠΊΠΎΠ΄). ΠΠ°ΠΊ ΠΈ COM, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° .NET ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΠΎΠ². ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ .NET ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° IDL (Interface Definition Language β ΡΠ·ΡΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² COM-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² COM). ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΈΠ»ΠΈΡΠ° ildasm.exe (ΡΠΌ. Π³Π»Π°Π²Ρ 1), ΠΡΠ»ΠΈ Π²Ρ ΠΎΡΠΊΡΠΎΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ildasm.exe Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ *.dll ΠΈΠ»ΠΈ *.exe, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π²Π°ΠΌΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, CarLibrary.dll), ΠΈ Π½Π°ΠΆΠΌΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ βΉCtrl+MβΊ, ΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ (ΡΠΈΡ. 12.1).
Π ΠΈΡ. 12.1. ΠΡΠΎΡΠΌΠΎΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ildasm.exe ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ .NET-ΡΠΈΠΏΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ (Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌ). ΠΡΠ»ΠΈ Π±Ρ Π·Π΄Π΅ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° CarLibrary.dll ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, ΠΎΠ½ΠΎ Π±Ρ Π·Π°Π½ΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΈΡ. ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π»ΠΈΡΠ½Π΅ΠΉ ΡΡΠ°ΡΠΎΠΉ Π²Π°ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΈ Π±ΡΠΌΠ°Π³ΠΈ ΡΠΎΠΆΠ΅), ΡΠ°ΠΊ ΡΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΈΠΏΠΎΠ² ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° CarLibrary.dll.
ΠΠ½Π°Π»ΠΈΠ· ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ½Ρ EngineState
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠΌ "TypeDef #n" (Π³Π΄Π΅ TypeDef β ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ type definition, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ°). ΠΡΠ»ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΏ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° .NET, ΡΠΎ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ "TypeRef #n" (Π³Π΄Π΅ TypeRef β ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ type reference, Π² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΈΠΏ). ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅, TypeRef ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ .NET ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±Π»ΠΈΡ, ΡΠ²Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² (TypeDef) ΠΈ Π²ΡΠ΅ ΡΠΈΠΏΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ (TypeRef). ΠΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ildasm.exe.
Π ΡΠ»ΡΡΠ°Π΅ CarLibrary.dll ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ TypeDef Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡeΡ ΠΏΠ΅ΡΠ΅ΡΠ½Ρ CarLibrary.EngineState (Ρ Π²ac Π½ΠΎΠΌΠ΅Ρ TypeDef ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ: Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ TypeDef ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΡΡΠ΄ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C# ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ).
TypeDef #1
-------------------------------------------------------------
TypDefName: CarLibrary.EngineState (020000002)
Flags: [Public] [AutoLayout] [Class] [Sealed] [AnsiClass] (00000101)
Extends: 01000001 [TypeRef] System.Enum
β¦
Field #2
-------------------------------------------------------------
Field ΠΠ°ΡΠ΅: engineAlive (04000002)
Flags: [Public] [Static] [Literal] [HasDefault] (00008056)
DefltValue: (I4) 0
CallCnvntn: [FIELD]
Field type: ValueClass CarLibrary.EngineState
β¦
ΠΠ΅ΡΠΊΠ° TypDefName ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΈΠΏΠ°. ΠΠ΅ΡΠΊΠ° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Extends ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° .NET (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΡΠΈΠΏ System.Enum, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΡΠΉ ΠΊΠ°ΠΊ TypeRef). ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΠ΅ΡΠ΅ΡΠ½Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΎ ΠΌΠ΅ΡΠΊΠΎΠΉ "Field #n". ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π΄Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ EngineState.engineAlive.
ΠΠ½Π°Π»ΠΈΠ· ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΠΈΠΏΠ° Car
ΠΠΎΡ ΡΠ°ΡΡΡ Π΄Π°ΠΌΠΏΠ° ΡΠΈΠΏΠ° Car, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
β’ ΡΠΏΠΎΡΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ .NET;
β’ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ .NET;
β’ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΈΠΏΠ° Π² ΠΏΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ»Π΅Π½ΠΎΠ²-ΡΡΠ½ΠΊΡΠΈΠΉ.
TypeDef #3
-------------------------------------------------------------
TypDefName: CarLibrary.Car (02000004)
Flags: [Public] [AutoLayout] [Class] [Abstract] [AnsiClass] (00100081)
Extends: 01000002 [TypeRef] System.Object
Field #1
-------------------------------------------------------------
Field Name: petName (04000008)
Flags: [Family] (00000004)
CallCnvntn: [FIELD]
Field type: String
β¦
Method #1
-------------------------------------------------------------
MethodName:.ctor (06000001)
Flags: [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor] (00001886)
RVA: 0x00002050
ImplFlags: [IL] [Managed] (00000000)
CallCnvntn: [DEFAULT]
hasThis
ReturnType: Void
No arguments.
β¦
Property #1
-------------------------------------------------------------
Prop.Name: PetName (17000001)
Flags: [none] (00000000)
CallCnvntn: [PROPERTY]
hasThis
ReturnType: String
No arguments.
DefltValue:
Setter: (06000004) set_PetName
Getter: (06000003) get_PetName
0 Others
β¦
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΎΡΠΌΠ΅ΡΡΡΠ΅ ΡΠΎ, ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° Car ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΈΠΏΠ° ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΡΠΈΠΏΠ° ΠΏΡΠΈ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ [public], [abstract] ΠΈ Ρ.ΠΏ.). ΠΠ΅ΡΠΎΠ΄Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Car) ΠΎΠΏΠΈΡΠ°Π½Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ get_ /set_ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠΊ Setter/Getter ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ .NET. ΠΠ°ΠΊ ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΡΠΈΠΏΡ Car (ΡΡΠΎ SportsCar ΠΈ MiniVan) ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ.
ΠΠ½Π°Π»ΠΈΠ· TypeRef
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² (Car, EngineState ΠΈ Ρ.Π΄.), Π½ΠΎ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΠΏΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ CarLibrary.dll ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π° ΠΏΠ΅ΡΠ΅ΡΠ½Ρ, Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π±Π»ΠΎΠΊ TypeRef Π΄Π»Ρ ΡΠΈΠΏΠ° System.Enum.
TypeRef #1 (01000001)
-------------------------------------------------------------
Token: 0x01000001
ResolutionScope: 0x23000001
TypeRefName: System.Enum
MemberRef #1
-------------------------------------------------------------
Member: (0a00000f) ToString:
CallCnvntn: [DEFAULT] hasThis
ReturnType: String
No arguments.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°
ΠΠΊΠ½ΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ildasm.exe ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΊΠ° Assembly. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π»ΠΈΡΡΠΈΠ½Π³Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Assembly, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ Π² ΠΎΠΊΠ½Π΅ ildasm.exe ΡΠ΅ΡΠ΅Π· ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΡ MANIFEST (ΠΈ ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ). ΠΠΎΡ ΡΠ°ΡΡΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° CarLibrary.dll (Π²Π΅ΡΡΠΈΠΈ 2.0.0.0).
Assembly
-------------------------------------------------------------
Token: 0x20000001
Name: CarLibrary
Public Key: 00 24 00 00 04 80 00 00 // ΠΈ Ρ.Π΄.