Найти самую длинную цепочку вызовов в решении Visual Studio - PullRequest
0 голосов
/ 16 января 2019

Учитывая, что у нас есть много классов, которые реализуют интерфейсы в решении для ряда проектов.

Есть ли способ определить самые длинные цепочки вызовов в решении с помощью статического анализа?

Например:

    class Foo : IFoo
    {
        private readonly IBar _bar;

        Foo(IBar bar)
        {
             _bar = bar;
        }

        public void Start()
        {
             _bar.Start();
        }
    }

    class Bar : IBar
    {
        private readonly IFoo2 _foo2;

        Bar(IFoo2 foo2)
        {
             _foo2 = foo2;
        }

        public void Start()
        {
             _foo2.Start();
        }

    }

    class Foo2 : IFoo2
    {
        public void Start()
        {
             Console.WriteLine("Foo2 started");
        }
    }

Где экземпляр Foo вызывает экземпляр Bar через интерфейс IBar, а экземпляр Bar вызывает экземпляр Foo2 через интерфейс IFoo2. Итак:

var foo = new Foo(new Bar(new (Foo2)));

foo.Start();

Самый длинный стек вызовов будет 3 уровня (так как в этом примере только один), который будет 3:

  1. Foo.Start
  2. Bar.Start
  3. Foo2.Start
...