コード例 #1
0
            private bool IsValidType(ITypeSymbol?symbol)
            {
                if (symbol == null)
                {
                    return(true);
                }

                var originalDefinition = symbol.OriginalDefinition;

                if (ConcreteCollectionSymbols.Any(t => t.IsEqualTo(originalDefinition)))
                {
                    return(false);
                }

                var namedTypeSymbol = symbol as INamedTypeSymbol;

                if (namedTypeSymbol != null)
                {
                    if (TaskSymbols.Any(t => t.IsEqualTo(symbol.OriginalDefinition)))
                    {
                        return(IsValidType(namedTypeSymbol.TypeArguments[0]));
                    }
                }

                return(true);
            }
コード例 #2
0
        public AnalyzerContext(Compilation compilation)
        {
            ConcreteCollectionSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Collections.Generic.List`1"));
            ConcreteCollectionSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Collections.Generic.HashSet`1"));
            ConcreteCollectionSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Collections.Generic.Dictionary`2"));
            ConcreteCollectionSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Collections.ObjectModel.Collection`1"));

            TaskSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Threading.Tasks.Task`1"));
            TaskSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Threading.Tasks.ValueTask`1"));

            XmlIgnoreAttributeSymbol = compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlIgnoreAttribute");

            XmlClassAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlTypeAttribute"));
            XmlClassAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlRootAttribute"));

            XmlPropertyAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlElementAttribute"));
            XmlPropertyAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlArrayAttribute"));
            XmlPropertyAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlAnyAttributeAttribute"));
            XmlPropertyAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlAnyElementAttribute"));
            XmlPropertyAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlArrayItemAttribute"));
            XmlPropertyAttributeSymbols.AddIfNotNull(compilation.GetTypeByMetadataName("System.Xml.Serialization.XmlTextAttribute"));
        }