Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet403/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   399   400   401   402   403   404   405   406   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.20 .Исключения.и.управление.состоянием
постусловия проверялись только после завершения метода. Для этого созданную 
компилятором C# сборку следует обработать инструментом Code Contract Rewriter 
(файл 
CCRewrite exe
находится по адресу 
C:\Program.Files.(x86)\Microsoft\Contracts\
Bin
) для получения ее модифицированной версии. После установки флажка 
Perform
Runtime
Contract
Checking
Visual Studio начнет вызывать эту утилиту автоматически 
еще на стадии создания проекта. Утилита анализирует IL-код всех ваших методов 
и переписывает его таким образом, чтобы постусловия выполнялись только после за-
вершения методов. Для методов, имеющих несколько точек выхода, утилита 
CCRewrite 
exe
редактирует IL-код, заставляя проверять условие перед завершением метода.
Утилита 
CCRewrite exe
ищет в типе методы, помеченные атрибутом 
[Contract-
InvariantMethod]
. Имя такого метода может быть любым, но обычно его называют 
ObjectInvariant
и добавляют модификатор 
private
(как я и сделал). Этот метод 
не имеет аргументов и возвращает 
void
. Обнаружив его, 
CCRewrite exe
вставляет 
IL-код вызова метода 
ObjectInvariant
после всех открытых экземплярных методов. 
В результате состояние объекта проверяется после возвращения значения каждым 
из методов, гарантируя, что ни один из них не нарушил условий контракта. Метод 
Finalize
и метод 
Dispose
класса 
IDisposable
утилитой 
CCRewrite exe
не редак-
тируются, потому что состояние объекта перед его уничтожением или отправкой 
в корзину не имеет никакого значения. Следует также заметить, что один тип может 
определять несколько методов с атрибутом 
[ContractInvariantMethod]
; это по-
лезно при работе с частичными типами. Утилита 
CCRewrite exe
перепишет IL-код 
таким образом, что все эти методы будут вызываться (в неопределенном порядке) 
в конце каждого открытого метода.
Методы 
Assert
и 
Assume
не похожи на остальные. Во-первых, они не являются 
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   399   400   401   402   403   404   405   406   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish