Мы моделируем сложную систему, основанную на сложной взаимосвязи сущностей в 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, но буду рад любым предложениям!
Я хотел бы немного переделать код, но на это нет времени, и хотя это выглядит странно, на самом деле у нас довольно хорошая цикломатическая сложность.