Как я могу создать настраиваемый раздел конфигурации, который может содержать атрибуты, не определенные во время компиляции?

Обратите внимание, что это не реальный случай, а всего лишь упрощенный пример.

Допустим, у меня есть класс журнала, затем подкласс, из которого у меня есть журнал файлов и журнал электронной почты. Теперь предположим, что я хочу иметь раздел конфигурации, например

   Logs>
     Log Type="file" fileName="log.txt" Verbosity="3"/>
     Log Type="email" emailAddress="[email protected]" Verbosity="1"/>
   /Logs>

В настоящее время у меня есть решение, которое позволит

   Logs>
     Log Type="file" Verbosity="3"/>
     Log Type="email" Verbosity="1"/>
   /Logs>

Но как только я пытаюсь добавить fileName или emailAddress * (это только пример), я получаю сообщение об ошибке, потому что раздел конфигурации для базового класса журнала не содержит configurationProperties, специфичные для дополнительных типов журналов. Есть ли способ, которым это можно сделать?


person Paragon    schedule 16.11.2012    source источник


Ответы (1)


Вы можете переопределить метод OnDeserializeUnrecognizedAttribute и сохранить ценность в какой-то сумке с имуществом. Если вы посмотрите на класс System.Diagnostics.ListenerElement в сборке System, вы увидите, что он делает именно это; вам нужно будет получить исходный код фреймворка или использовать для этого декомпилятор.

person fsimonazzi    schedule 16.11.2012