Итак, у меня есть собственный прослушиватель трассировки, который начал свою жизнь как:
http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener
Я модифицировал это, чтобы оно больше походило на Log4Net RollingFileAppender (, см. :http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.html)
. Когда я запускаю код, я обнаруживаю, что он не устанавливает значения свойств/полей из пользовательских атрибутов в файле конфигурации.
Анализ объекта во время выполнения показывает, что свойство Attributes (this.Attributes )ничего не содержит.
Любые идеи, как я могу это исправить?
Я должен вручную заполнить их или что-то в этом роде?
Хорошо, вот пример кода:
[HostProtection(Synchronization = true)]
public class RollingXmlWriterTraceListener : XmlWriterTraceListener
{
public RollingXmlWriterTraceListener(string filename)
: base(filename)
{
_basicTraceFileName = filename;
LoadAttributes();
}
Затем в методе LoadAttributes я делаю...
if (Attributes.ContainsKey("maxTraceFileCount"))
{
string attributeValue = Attributes["maxTraceFileCount"];
Проблема в том, что «Атрибуты» никогда ничего не содержат. Этот класс создан из кода фреймворка с использованием информации о конфигурации, которая содержит атрибуты...
Редактировать 2:
Класс XmlWriterTraceListener является частью.Net, поэтому он стал моим базовым классом в свойстве Inherit the Attributes.
В конфигурации я должен иметь возможность указать любой атрибут, а затем в коде сделать что-то вроде...
var attValue = Attributes["something"];
... но по какой-то причине возвращается значение null (атрибута нет в коллекции ).