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); }
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")); }