Есть базовый класс, в котором два метода — GetValue и SetValue. Есть потомки, определяющие некоторые свойства с атрибутами. В свойствах вызывается GetValue и SetValue. Эти методы раскручивают стэк, смотрят, кто их вызвал (по идее — метод, сгенерированный свойством), находят свойство, находят атрибут и данные этого атрибута и действуют в соответсвии с этими данными. При отдадке все работает нормально, но без отладчика Runtime Optimization Service встраивает методы свойства в функцию, где эти свойства используются, из-за чего при раскрутке стэка вызвавшей функцией оказывается не метод свойства, а метод, использующий это свойство.
Можно ли как-то отключить оптимизацию для этих свойств, чтобы их методы генерировались, а не встраивались?
PS спросите, зачем все так сделано? Так надо. Считайте, что мсье знает толк в извращениях.
13.07.10 17:07: Перенесено модератором из 'Этюды для программистов' — Кодт
Да там и пересматривать нечего. Речь идет о классах, реализующих записи в БД. В атрибутах — имя столбца. Раньше имя передавалось при вызове методов базового класса, но хотелось сделать решение с минимумом кода, т.к. таблиц немало. Но если оптимизация не отключается, то увы мне.
Здравствуйте, Aberro, Вы писали:
A>Да там и пересматривать нечего. Речь идет о классах, реализующих записи в БД. В атрибутах — имя столбца. Раньше имя передавалось при вызове методов базового класса, но хотелось сделать решение с минимумом кода, т.к. таблиц немало. Но если оптимизация не отключается, то увы мне.
Попробуйте
MethodImplAttribute с параметром MethodImplOptions.NoInlining или MethodImplOptions.NoOptimization.