Мне показалось, что singleton работает не в пределах сессии, а в пределах thread. Я пытался с его помощью передать параметры в отчет, так вот отчеты работают в другои потоке (возможно для запуска отчета создается новая сессия) и singleton у них будет свой, чистый.
С его помощью можно много чего реализовать, только понять, что присходит в сисетеме, будет все труднее.
Пример: есть таблица и мы хотим получить, что то типа -
X++:
void update()
{
MyTable myTableOrig = this.orig();
super();
if (myTableOrig.MyField != this.MyField)
{
do something....
}
}
Можно в pre update положить в singleton orig и в post update сделать сравнение и do something.
P.S. Extension подход только усложняет систему и ее поддержку.