示例#1
0
        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));
        }