using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Prise.IntegrationTestsContract; using Prise.Plugin; namespace PluginA { /// /// This plugin does not require any 3rd party dependencies or dependency injection, /// as long as a default parameterless constructor is present (implicitly or explicitly), this plugin will get loaded. /// [Plugin(PluginType = typeof(ICalculationPlugin))] public class AdditionCalculationPlugin : ICalculationPlugin { public string Name => nameof(AdditionCalculationPlugin); public string Description => "This plugin performs addition"; public int Calculate(int a, int b) { return a + b; } public decimal Calculate(decimal a, decimal b) { return a + b; } public decimal CalculateComplex(CalculationContext context) { return context.A + context.B; } public CalculationResult CalculateComplexResult(CalculationContext context) { return new CalculationResult { Result = context.A + context.B }; } public ComplexCalculationResult CalculateMutiple(ComplexCalculationContext context) { var results = new List(); results.AddRange(context.Calculations.Select(c => new CalculationResult { Result = c.A + c.B })); return new ComplexCalculationResult { Results = results.ToArray() }; } public async Task CalculateMutipleAsync(ComplexCalculationContext context) { var results = new List(); results.AddRange(context.Calculations.Select(c => new CalculationResult { Result = c.A + c.B })); await Task.Delay(2500); return new ComplexCalculationResult { Results = results.ToArray() }; } } }