Trace.Write (строка, строка) и Trace.WriteLine (строка, строка) не фильтруются по категории - PullRequest
3 голосов
/ 14 ноября 2011

При использовании Trace.Listener кто-нибудь может сказать мне, почему

Trace.Write(string message, string category) 

не передает строку категории в TraceFilter, когда метод

Trace.Write(object o, string category)

передает строку категории в метод ShouldTrace. Ниже приведены декомпиляции обоих методов из Reflector. Просто интересно, почему команда .NET делает что-то для одного метода, а не для другого.

public virtual void Write(object o, string category)
{
    if ((this.Filter == null) || 
 this.Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, category, null, o))
    {
        if (category == null)
        {
            this.Write(o);
        }
        else
        {
            this.Write((o == null) ? "" : o.ToString(), category);
        }
    }
}

и затем строковый метод.

public virtual void Write(string message, string category)
{
    if ((this.Filter == null) || 
         this.Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, message))
    {
        if (category == null)
        {
            this.Write(message);
        }
        else
        {
            this.Write(category + ": " + ((message == null) ? string.Empty : message));
        }
    }
}

1 Ответ

0 голосов
/ 12 декабря 2011

вызов this.Write при первой перегрузке

this.Write((o == null) ? "" : o.ToString(), category);

делегирует фактический выход для второй перегрузки

public virtual void Write(string message, string category)

Все форматирование для вывода затем централизовано во второй перегрузке:

this.Write(category + ": " + ((message == null) ? string.Empty : message));

Путем централизации фактического форматирования таким образом, изменение форматирования в одном месте изменит все форматирование вывода трассы. Это приложение СУХИЕ принципы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...