Пошаговый мини-профилировщик MVC без вложенного использования

Мы моделируем сложную систему, основанную на сложной взаимосвязи сущностей в Dynamics CRM 4.0

Из-за характера разработки нам пришлось реализовать шаблон стиля репозитория и иметь множество различных поставщиков, которые связаны с каждым. разное.

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

Проблема, конечно же, в области видимости - если я заключу конструктор в блок using, он станет недоступен для чего-либо еще. Если я расширю блок using так, чтобы все, что ссылается на профилируемый мной объект, попало в область видимости, профилировщик не просто профилирует конструктор - он синхронизирует все остальное.

Точно так же есть уровень вложенности. Если я правильно вложу использование, то код станет нечитаемым.

Я просмотрел Profiler.Inline, но это не служит моим целям.

Я бы хотел вот что:

ref = Profiler.StartStep("Creating CRM Model");
//Do horrible CRM work
var myNewHorribleObject = CRM.ModelHorribleStuff(...);
Profiler.StopStep(ref);

ref = Profiler.StartStep("How long does it take to get X");
var data = Repository.GetSomething(myNewHorribleObject.SomeId);
Profiler.StopStep(ref);

ref = Profiler.StartStep("How long does it take to get Y");
var newData = Repository.GetSomethingElse(myNewHorribleObject.ContextId);
Profiler.StopStep(ref);

Есть ли в этом смысл? Надеюсь, я что-то упускаю из Mini Profiler, но буду рад любым предложениям!

Я хотел бы немного переделать код, но на это нет времени, и хотя это выглядит странно, на самом деле у нас довольно хорошая цикломатическая сложность.

7
задан ccellar 29 February 2012 в 13:52
поделиться