using JiShe.CollectBus.Protocol.Contracts.Interfaces; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace JiShe.CollectBus.Protocol.Contracts { public class AnalysisStrategyContext { private readonly IServiceProvider _provider; public AnalysisStrategyContext(IServiceProvider provider) => _provider = provider; /// /// 执行策略 /// /// /// /// /// /// public Task ExecuteAsync(string type, TInput input) { var factory = _provider.GetRequiredService>(); var strategy = (IAnalysisStrategy)factory(type, typeof(TInput), typeof(TResult)); return strategy.ExecuteAsync(input); } } }