Cache Studio не отражает изменения, внесенные пользовательскими классами %Projection.AbstractProjection

Иногда я использую классы проекции (подклассы %Projection.AbstractProjection) для создания различных вещей, и я обнаружил, что если я использую классы %Dictionary для изменения других классов из метода CreateProjection, изменения превращаются в ^oddDEF правильно, измененные классы компилируются и работают правильно, но Cache Studio не видит изменений и продолжает отображать их в том виде, в каком они были до модификации. Если я затем скомпилирую из Cache Studio, он перезапишет изменения, сделанные классом проекции.

Это довольно «липко» - если я закрою измененные классы, удалю их из своего проекта, затем добавлю их обратно и открою, неизмененная кэшированная версия все еще будет в Cache Studio.

Я вызываю QueueClass для измененных классов, но это не имеет значения. У меня 2008.2, если это имеет значение.

Как я могу программно заставить Cache Studio обновить свой кеш или иным образом решить эту проблему разумным способом (например, закрытие Cache Studio каждый раз не очень разумно)?


person psr    schedule 08.11.2012    source источник
comment
У меня нет для вас решения, но я решил указать, что Документация класса AbstractProjection отмечает, что его предназначение заключается в создании других внешних файлов во время компиляции, поэтому вы можете использовать его непреднамеренным образом. Можете ли вы предоставить дополнительную информацию о том, чем вы манипулируете в других классах? Возможно, мы сможем предложить вам лучший способ сделать это.   -  person Derek    schedule 08.11.2012
comment
@Derek - например, я создаю методы. Обратите внимание, что классы работают нормально, но не Cache Studio.   -  person psr    schedule 08.11.2012
comment
Похоже, вы могли бы использовать Генераторы методов вместо этого, хотя по общему признанию, они предназначены для создания частей одного и того же класса, а не для других классов, подобных тому, что вы делаете. Могу я спросить, почему у вас есть один класс, генерирующий части другого класса? На мой взгляд, это предполагает, что у вас может быть несколько обязанностей в одном или нескольких классах, и что реорганизация ваших классов может быть лучшим решением.   -  person Derek    schedule 09.11.2012
comment
@Derek - Тебе придется поверить мне, что это имеет смысл.   -  person psr    schedule 09.11.2012
comment
Хорошо, достаточно честно. =D Похоже, ваша основная проблема - это просто ошибка, о которой следует сообщить InterSystems.   -  person Derek    schedule 09.11.2012


Ответы (1)


Попробуйте сбросить свойство TimeChanged %Dictionary.ClassDefinition

person SSH    schedule 09.11.2012
comment
попробуйте это $$$defClassKeySet(%class.Name,$$$cCLASStimechanged,$h) Do RebuildItemIndex^%R(%class.Name,CLS) - person SSH; 19.04.2013