/// <summary> /// Initializes a <see cref="HazardousUsageEvaluator"/> that evaluates a return statement with a return value of the tracked type. /// </summary> /// <param name="evaluator">Evaluation callback.</param> public HazardousUsageEvaluator(HazardousUsageEvaluatorKind kind, EvaluationCallback evaluator) { if (kind != HazardousUsageEvaluatorKind.Return && kind != HazardousUsageEvaluatorKind.Initialization) { throw new ArgumentException( "kind must be Return or Initialization. Use other constructors for Invocation.", nameof(kind)); } Kind = kind; ValueEvaluator = evaluator ?? throw new ArgumentNullException(nameof(evaluator)); }
/// <summary> /// Initializes a <see cref="HazardousUsageEvaluator"/> that evaluates a return statement with a return value of the tracked type. /// </summary> /// <param name="evaluator">Evaluation callback.</param> /// <param name="derivedClass">Whether to consider derived class.</param> public HazardousUsageEvaluator(HazardousUsageEvaluatorKind kind, EvaluationCallback evaluator, bool derivedClass = false) { if (kind is not HazardousUsageEvaluatorKind.Return and not HazardousUsageEvaluatorKind.Initialization and not HazardousUsageEvaluatorKind.Argument) { throw new ArgumentException( "kind must be Return or Initialization or Argument. Use other constructors for Invocation.", nameof(kind)); } Kind = kind; DerivedClass = derivedClass; ValueEvaluator = evaluator ?? throw new ArgumentNullException(nameof(evaluator)); }