}
}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ TurboBoost() Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ° MessageBox, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ System. Windows.Forms.dll. Π§ΡΠΎΠ±Ρ Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠΎΠ³ΠΎ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° CarLibrary Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Add Reference (ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ), Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π² Visual Studio 2005 ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ProjectβAdd Reference ΠΈΠ· ΠΌΠ΅Π½Ρ (ΡΠΈΡ. 11.6).
Π ΠΈΡ. 11.6. ΠΠ΄Π΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ .NET
ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Add Reference ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π½Π΅ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ .NET, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π½Π° Π²Π°ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Add Reference Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π²Π°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΈ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π² GAC. ΠΡΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Visual Studio 2005. ΠΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ, Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Add Reference, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Browse (ΠΡΠΎΡΠΌΠΎΡΡ) ΠΈ Π²ΡΡΡΠ½ΡΡ Π½Π°ΠΉΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠ°ΠΉΠ» *.dll ΠΈΠ»ΠΈ *.exe.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ»ΠΈΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Add Reference, Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ Π² ΠΏΠ°ΠΏΠΊΡ C:\Program Files\Microsoft Visual Studio 8\Common7\lDE\PublicAssemblies, Π½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° Π² ΡΡΠΎΠΌ Π½Π΅Ρ. ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Recent (ΠΠ΅Π΄Π°Π²Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ) ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΡΡΠ»Π°Π»ΠΈΡΡ.
ΠΠ½Π°Π»ΠΈΠ· ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CarLibrary.dll Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΡΡΠ½ΠΈΠΌ, ΠΈΠ· ΡΠ΅Π³ΠΎ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ², ΡΡΠΎ Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΆΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½, Π·Π°Π³ΡΡΠ·ΠΈΠΌ CarLibrary.dll Π² ildasm.exe (ΡΠΈΡ. 11.7).
Π ΠΈΡ. 11.7. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° CarLibrary.dll Π² ΠΎΠΊΠ½Π΅ ildasm.exe
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΡΠ°ΠΉΠ»Π° CarLibrary.dll Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΡΠ΅Π»ΡΠΊΠΎΠΌ Π½Π° ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ MANIFEST. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠΌΡ Π±Π»ΠΎΠΊΡ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, CarLibrary.dll ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΏΡ ΠΈΠ· mscorlib.dll ΠΈ System.Windows.Forms.dll, ΠΈ ΠΎΠ±Π° ΡΡΠΈ ΡΠ°ΠΉΠ»Π° Π±ΡΠ΄ΡΡ ΡΠΊΠ°Π·Π°Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΡ .assembly extern Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
.assembly extern mscorlib {
.publickeytoken = (Π7 7A 5C 56 19 34 E0 89)
.ver 2:0:0:0
}
.assembly extern System.Windows.Forms {
.publickeytoken = (B7 7A 5C 56 19 34 E0 89)
.ver 2:0:0:0.
}
ΠΠ΄Π΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±Π»ΠΎΠΊ .assembly extern ΡΠ½Π°Π±ΠΆΠ΅Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ .publickeytoken ΠΈ .ver. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ .publickeytoken ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠΎΠ³ΡΡ ΡΠΎΡΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΏΠΎΠ·ΠΆΠ΅). ΠΠ΅ΠΊΡΠ΅ΠΌΠ°.ver ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ (ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅) ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π΅ΡΡΠΈΠΈ.
ΠΠΎΡΠ»Π΅ ΡΠΏΠΈΡΠΊΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈΠ·Π°ΡΠΈΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅ ΡΡΠ΄ Π»Π΅ΠΊΡΠ΅ΠΌ.custom, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΡ ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. ΠΡΠΎΠ²Π΅ΡΠΈΠ² ΡΠ°ΠΉΠ» AssemblyInfΠΎ.cs, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² Visual Studio 2005, Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, ΠΊΠ°ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΡΠΎΡΠ³ΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ° ΠΈ Ρ.Π΄. (Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΡΡΡ). Π Π³Π»Π°Π²Π΅ 14 Π°ΡΡΠΈΠ±ΡΡΡ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π½Π° Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΠ· AssemblyInfo.cs Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΡΡΠ΄ Π»Π΅ΠΊΡΠ΅ΠΌ .custom, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, [AssemblyTitle].
.assembly CarLibrary {
β¦
.custom instance void [mscorlib]
System.Reflection.AssemblyTitleAttribute::.ctor(string) = (01 00 00 00 00)
.hash algorithm 0x00008004
.ver 1:0:454:30104
}
.module CarLibrary.dll
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π»Π΅ΠΊΡΠ΅ΠΌΠ° .assembly ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (CarLibrary), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π»Π΅ΠΊΡΠ΅ΠΌΠ° .module ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠΌΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ (CarLibrary.dll). ΠΠ΅ΠΊΡΠ΅ΠΌΠ° .ver ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ, Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ [AssemblyVersion] ΠΈΠ· AssemblyInfo.cs. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΏΠΎΠ·ΠΆΠ΅, Π° ΡΠ΅ΠΉΡΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π³ΡΡΠΏΠΏΠΎΠ²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» * Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ [AssemblyVersion] ΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ Visual Studio 2005 ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π²Π΅ΡΡΠΈΠΈ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ°.
ΠΠ½Π°Π»ΠΈΠ· CIL-ΠΊΠΎΠ΄Π°
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ CIL-ΠΊΠΎΠ΄. ΠΠΎΠ³Π΄Π° ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π² ΠΏΠ°ΠΌΡΡΡ, ΡΡΠΎΡ CIL-ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°) Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠ΅Π»ΡΠΎΠΊ Π½Π° ΡΡΡΠΎΠΊΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° TurboBoost() ΠΊΠ»Π°ΡΡΠ° SportsCar, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ildasm.exe ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ CIL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
.method public hidebysig virtual instance void TurboBoost() cil managed {
// Code size 17 (0x11)
.maxstack 2
IL_0000: ldstr "Ramming speed!"
IL_0005: ldstr "Faster is betterβ¦"
IL_000a: call valuetype [System.Windows.Forms] System.Windows.Forms.DialogResult [System.Windows.Forms] System.Windows.Forms.MessageBox::Show(string, string)
IL_000f: pop
IL_0010: ret
} // end of method SportsCar::TurboBoost
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠΎΠΌ SportsCar, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠ° .method. Π§Π»Π΅Π½Ρ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠΎΠΌ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠΎΠΉ .field. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Car ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ currSpeed.
.field family int 16 currSpeed
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Ρ Π»Π΅ΠΊΡΠ΅ΠΌΠΎΠΉ.property. ΠΡΠΎΡ CIL-ΠΊΠΎΠ΄ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΡΠΊΡΡΡΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ CurrSpeed (Π·Π°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ read/write ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠ°ΠΌΠΈ .get ΠΈ .set).
.property instance int16 CurrSpeed() {
.get instance int16 CarLibrary.Car::get_CurrSpeed()
.set instance void CarLibrary.Car::set_CurrSpeed(int16)
} // end of property Car::CurrSpeed
ΠΠ½Π°Π»ΠΈΠ· ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ²
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΠΆΠΌΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ βΉCtrl+MβΊ, ildasm.exe ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠΈΠΏΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ CarLibrary.dll (ΡΠΈΡ. 11.8).
Π ΠΈΡ. 11.8. ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Π½Π° CarLibrary.dll
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ Ρ Π²Π°ΠΌΠΈ Π·Π°Π³Π»ΡΠ½ΡΠ»ΠΈ Π²Π½ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° CarLibrary.dll, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΠ΅ΠΊΡ CarLibrary ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ Π³Π»Π°Π²Π΅ 11.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² C#
ΠΠ²ΠΈΠ΄Ρ ΡΠΎΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΈΠΏΡ CarLibrary Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ public, Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΡΠΈΠΏΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° C# internal (ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ° Π² C# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΠΈΠΏ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ public). ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠΈΠΏΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π½ΠΈ Π²ΠΈΠ΄Π΅ΡΡ, Π½ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠΈΠΏΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ².
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π‘Π΅Π³ΠΎΠ΄Π½Ρ .NET 2.0 ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ "Π΄ΡΡΠΆΠ΅Π»ΡΠ±Π½ΡΠ΅" ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ΅ Π±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠΈΠΏΡ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ .NET Framework 2.0 SDK Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° InternalsVisibleToAttribute.
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΊΡΡΡΡΡ ΡΠΈΠΏΠΎΠ² CarLibrary ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ C# (CSharpCarClient). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° Carbibrary.dll Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Browse Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Add Reference (Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ CarLibrary.dll Π² Visual Studio 2005, Π²Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ \Bin\Debug ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° CarLibrary). ΠΠΎΡΠ»Π΅ ΡΠ΅Π»ΡΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΠ Visual Studio 2005 ΠΏΠΎΠΌΠ΅ΡΡΠΈΡ ΠΊΠΎΠΏΠΈΡ CarLibrary.dll Π² ΠΏΠ°ΠΏΠΊΡ \Bin\Debug ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° CSharpCarClient (ΡΠΈΡ. 11.9).
Π ΠΈΡ. 11.9. Visual Studio 2005 ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ C#-ΡΠ°ΠΉΠ» ΡΠ°ΠΊ.
using System;
// ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ 'ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ' ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ CarLibrary!
using CarLibrary;
namespace CSharpCarClient {
public class CarClient {
static void Main(string[] args) {
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠΎΡΡΠΈΠ²Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ.
SportsCar viper = new SportsCar("Viper", 240, 40);
viper.TurboBoost();
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠ²ΡΠ½Π°.
MiniVan mv = new MiniVan();
mv.TurboBoost();
Console.ReadLine();
}
}
}
ΠΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΎΠ·Π΄Π°Π²Π°Π²ΡΠΈΡ ΡΡ Π½Π°ΠΌΠΈ ΡΠ°Π½Π΅Π΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ C# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΏΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΠΊΡΠ°Π½Π΅ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΎΠΊΠΎΠ½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.