Проблема кэширования поставщика метаданных пользовательской модели

Чтобы мы могли динамически контролировать метки и сообщения об ошибках, мы создали DataAnnotationsModelMetadataProvider, В Display атрибут мы храним ключ в Name собственность и использование пользовательских DataAnnotationsModelMetadataProvider мы подставляем ключ для строкового значения из нашей пользовательской CMS. Проблема в том, что теперь у нас есть два набора значений. Один для веб-просмотров и один для мобильных просмотров. Во время выполнения мы проверяем, находится ли клиент на мобильном устройстве, и подставляем соответствующие значения.

После пробного запуска этой установки я наткнулся на странную проблему. Когда AppDomain впервые создан и Name свойства различных аннотаций данных заменяются строковыми значениями, все работает нормально. В отладке, когда я вхожу в кастом DataAnnotationsModelMetadataProvider во второй раз я вижу свойства имени, уже заполненные значениями, которые я подставил при предыдущем запуске. Это было странно для меня, так как я понимал, что свойства аннотации данных не могут быть изменены во время выполнения. Теперь кажется, что где-то происходит кеш метаданных модели. Поскольку я основывал свое собственное решение на замене значений каждый раз, когда DataAnnotationsModelMetadataProvider Я бы хотел отключить это кеширование, если это возможно.

Сейчас я начал использовать ShortName свойство как мой ключ хранения свойства, и я заменяю Name свойство, и таким образом я могу заполнять строки при каждом запуске. Но это был не первоначальный дизайн, и у меня нет такого ключевого свойства магазина для ValidationAttributes,

Так есть ли способ отключить этот кеш? Мне не нужен кеш для кеширования, так как все данные CMS кэшируются в памяти в другом слое в любом случае.

0 ответов

Другие вопросы по тегам