14.02.2013, 09:42 | #1 |
Ищущий знания...
|
Косяк в методе new() класса SysMailer
Всем доброго времени суток!
Наткнулся сегодня на очередной косяк в коде на слое SYS... АХ 4.0 SP2, класс SysMailer метод new(). В этот метод параметром можно передать COM объект, и этот параметр заполняется по умолчанию... X++: void new(COM c = new COM('CDO.Message')) { COM cdoConfig; InteropPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); _COM = c; .... } В итоге ошибка исправляется инициализацией по умолчанию COM класса значением null, а уже после выполнения permission.assert(); выполняем проверку переданного параметра и если он == null инициализируем его. X++: //void new(COM c = new COM('CDO.Message')) void new(COM c = null) // до permission инициализируем значением null! { COM cdoConfig; InteropPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); // после того как получили разрешение проверяем параметр и при необходимости инициализируем его! --> if (!c) c = new COM('CDO.Message'); // после того как получили разрешение проверяем параметр и при необходимости инициализируем его! <-- _COM = c; ... }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
14.02.2013, 12:36 | #2 |
Участник
|
|
|
14.02.2013, 12:55 | #3 |
Ищущий знания...
|
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|