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