public InterfaceTree(INamedTypeSymbol rootType) { Services = new List <(string ServiceName, INamedTypeSymbol ServiceType)>(); Interfaces = new List <INamedTypeSymbol>(); var interfaces = SyntaxTools.ExpandInterface(rootType).ToList(); ExtractServiceContracts(interfaces); ExtractAttachedContracts(interfaces); Interfaces.AddRange(interfaces); }
public void ExpandClassInterface() { var s1Symbol = Compilation.GetTypeByMetadataName(typeof(S1)); s1Symbol.ShouldNotBeNull(); var actual = SyntaxTools.ExpandInterface(s1Symbol); actual.Count.ShouldBe(2); actual.ShouldNotContain(s1Symbol); actual.ShouldContain(Compilation.GetTypeByMetadataName(typeof(I1))); }
public void ExpandInterface() { var i1Symbol = Compilation.GetTypeByMetadataName(typeof(I1)); i1Symbol.ShouldNotBeNull(); var actual = SyntaxTools.ExpandInterface(i1Symbol); actual.Count.ShouldBe(2); actual.ShouldContain(i1Symbol); var disposableSymbol = actual.First(i => !SymbolEqualityComparer.Default.Equals(i, i1Symbol)); disposableSymbol.Name.ShouldBe(nameof(IDisposable)); }