鉴于我们有许多类可以在多个项目的解决方案中实现接口。
是否可以使用静态分析找出解决方案中最长的呼叫链?
例如:
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: