public override void Initialize(AnalysisContext analysisContext) { analysisContext.EnableConcurrentExecution(); analysisContext.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); analysisContext.RegisterCompilationStartAction( (context) => { INamedTypeSymbol iCollectionType = WellKnownTypes.ICollection(context.Compilation); INamedTypeSymbol arrayType = WellKnownTypes.Array(context.Compilation); INamedTypeSymbol dataMemberAttribute = WellKnownTypes.DataMemberAttribute(context.Compilation); if (iCollectionType == null || arrayType == null) { return; } context.RegisterSymbolAction(c => AnalyzeSymbol(c, iCollectionType, arrayType, dataMemberAttribute), SymbolKind.Property); }); }