Кіріспе

Ортақ тілдік инфрақұрылым сыныптар мен сынып мүшелері туралы метадеректер. Ортақ тілдік инфрақұрылымда (CLI) метадеректер – кодтың жоғары деңгейлі құрылымын сипаттайтын ортақ аралық тіл (CIL) кодына енгізілген дерек құрылымдары. Метадеректер жиналымда анықталған барлық сыныптар мен сынып мүшелерін, сондай-ақ ағымдағы жиналымның басқа жиналымнан шақыратын сыныптар мен сынып мүшелерін сипаттайды. Әдістің метадеректерi әдістің толық сипаттамасын қамтиды, оның ішінде сыныпты (және сыныпты қамтитын жиналымды), қайтарым түрін және барлық әдіс параметрлерін. CLI тілінің компиляторы метадеректерді жасайды және оларды CIL кодын қамтитын жиналымға сақтайды. CIL орындалған кезде, шақырылған әдістің метадеректерi шақырушы әдісте сақталған метадеректермен сәйкес келеді дегенге көз жеткізіледі. Бұл әдісті параметрлердің нақты санымен және параметрлердің дұрыс түрлерімен ғана шақыруға мүмкіндік береді. Windows 8 және Windows Phone 8 жүйелерінде қолданылатын Windows Runtime қолданба платформасы, қолдау көрсетілетін кез келген бағдарламалау тілінде жазылған кодтың компоненттік интерфейстерін сипаттау үшін CLI метадеректер форматын пайдаланады. Common Language Runtime-дағы ерекшелік – жиналымдар әдетте CIL нұсқауларын қамтымайды.

Метадеректерді сақтау

Ассембльдерде метадеректер кестелері болады. Бұл кестелер CIL спецификациясында сипатталған. Метадеректер кестелерінде нөл немесе одан көп жазбалар болады, ал жазбаның орны оның индексін анықтайды. CIL коды метадеректерді пайдаланғанда, ол метадеректер токені арқылы іске асырылады. Бұл 32 биттік мән, ондағы жоғарғы 8 бит тиісті метадеректер кестесін көрсетеді, ал қалған 24 бит кестедегі метадеректердің индексін анықтайды. Framework SDK құрамында ассембльдегі метадеректер кестелерін тізімдейтін мысал бар, бірақ бұл ақпарат әзірлеушіге көбінесе қажет болмайды. Ассембльдегі метадеректерді NET Framework SDK-мен ұсынылатын ILDASM құралын пайдаланып қарауға болады. CIL стандартында метадеректер ILAsm (ассемблирлік тіл) форматында, сақтау үшін дискідегі форматта және Портативті орындалатын (PE, exe немесе dll) форматтағы ассемблилерге енгізілген форматта анықталады. PE форматы дискідегі форматқа негізделген.

Ойлану

Рефлексия – CLI метадеректерін оқуға қолданылатын API. Рефлексия API, metainfo сияқты құралдар ұсынатын нақты көріністен гөрі, метадеректерінің логикалық көрінісін қамтамасыз етеді. NET фреймворкінің 1.1 нұсқасында рефлексияны сыныптар мен олардың мүшелерінің сипаттамаларын қарастыру және әдістерді шақыру үшін пайдалануға болады. Дегенмен, ол әдістің CIL кодына орындалу кезінде қол жеткізуге мүмкіндік бермейді. Фреймворктің 2.0 нұсқасы әдістің CIL кодын алуға рұқсат береді.

Басқа метадеректер құралдары

Атау кеңістігінен басқа, метадеректерді басқаруға арналған тағы да бірнеше құралдар бар. Microsoft .NET Framework жергілікті кодта іске асырылған CLR метадеректерді өңдеу кітапханасын қамтиды. Сондай-ақ, метадеректерді алу және өңдеу үшін PostSharp және Mono Cecil сияқты үшінші тарап құралдарын да пайдалануға болады.