/// <summary> /// Called on compilation start. /// </summary> /// <param name="context">The context.</param> private void OnCompilationStart(CompilationStartAnalysisContext context) { if (context.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemLinqEnumerable) is INamedTypeSymbol enumerableType) { var operationActionsContext = new OperationActionsContext( context.Compilation, enumerableType); context.RegisterOperationAction( CreateOperationActionsHandler(operationActionsContext).AnalyzeInvocationOperation, OperationKind.Invocation); } }
/// <summary> /// Called on compilation start. /// </summary> /// <param name="context">The context.</param> private void OnCompilationStart(CompilationStartAnalysisContext context) { if (WellKnownTypes.Enumerable(context.Compilation) is INamedTypeSymbol enumerableType) { var operationActionsContext = new OperationActionsContext( context.Compilation, enumerableType); context.RegisterOperationAction( CreateOperationActionsHandler(operationActionsContext).AnalyzeInvocationOperation, OperationKind.Invocation); } }
/// <summary> /// Creates the operation actions handler. /// </summary> /// <param name="context">The context.</param> /// <returns>The operation actions handler.</returns> protected abstract OperationActionsHandler CreateOperationActionsHandler(OperationActionsContext context);
/// <summary> /// Initializes a new instance of the <see cref="OperationActionsHandler"/> class. /// </summary> /// <param name="context">The context.</param> protected OperationActionsHandler(OperationActionsContext context) { Context = context; }
internal CSharpOperationActionsHandler(OperationActionsContext context) : base(context) { }
/// <summary> /// Creates the operation actions handler. /// </summary> /// <param name="context">The context.</param> /// <returns>The operation actions handler.</returns> protected override OperationActionsHandler CreateOperationActionsHandler(OperationActionsContext context) => new CSharpOperationActionsHandler(context);