在Visual Studio解决方案中找到最长的通话链

时间:2019-01-16 08:00:39

标签: visual-studio static-analysis

鉴于我们有许多类可以在多个项目的解决方案中实现接口。

是否可以使用静态分析找出解决方案中最长的呼叫链?

例如:

    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实例通过IBar接口调用Bar实例,而Bar实例通过IFoo2接口调用Foo2实例。所以:

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

foo.Start();

最长的调用堆栈将是3个级别(因为在此示例中只有一个级别)将是3:

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

0 个答案:

没有答案