Так уж получилось, что в Silverlight 2.0 beta 1 разработчики не включили знакомый
всем .net программистам класс Trace из System.Diagnostics. Как следствие стало затруднительно
выводить отладочные сообщения в протокол и анализировать его. Протокол оказывает
неоценимую услугу в задачах, например, оптимизации быстродействия.
На сайте code.elisy.net был представлен класс Elisy.Scab.Services.Trace,
опять же в виде модуля к
SCAB (Silverlight Composite Application Block). Исходный код вышел под лицензией GPL, но судя по специфике
SCAB в дальнейшем будет опубликован под LGPL. Мы, как и в прошлый раз,
отсоединим его, закомментировав класс public class TraceModule : Module и
его реализацию.
Описание класса Elisy.Scab.Services.Trace
Настройка класса происходит через два свойства: public string DestinationId и public
HtmlElement Destination. Первое указывает на Id элемента на Html странице, второе
– на сам html-элемент. Может указываться любое из этих свойств. Если не задавать
свойства или на странице нет элемента с DestinationId, класс сам создаст новый div-элемент, добавит его в конец body и будет
выводить сообщения в нем.
Вспомогательное свойство public int IndentLevel позволяет генерировать отступ при
выводе строк в протокол. Управление свойством ведется через IndentLevel++ и IndentLevel--.
public void Write(string message) – выводит строковую переменную в
элемент-приемник.
public void WriteHtml(string html) – выводит html-фрагмент в
элемент-приемник
public void WriteLine(string message) – выводит строковую переменную и делает перевод
на следующую строку через <br/>
Все 3 Write-метода работают со свойством innerHTML элемента-приемника. Write и WriteLine
учитывают IndentLevel и выводят разделитель кратный свойству.
Примеры вызова
Trace trace = new Trace();
trace.WriteLine("Message Line 1");
trace.Write("Message 2");
trace.WriteLine("Message 3");
trace.WriteHtml("<p>Message 4 as Html</p>");
trace.IndentLevel++;
trace.WriteLine("Message 5 with separator");
Результат вызова:
Message Line 1
Message 2Message 3
Message 4 as Html
Message 5 with separator
Trace.cs (3.90 kb)