using Kean.Domain.Task.Commands; using Kean.Domain.Task.Models; using System; using System.Linq; using System.Threading.Tasks; namespace Kean.Domain.Task.Strategies { /// /// 避让策略上下文 /// public sealed class AvertContext where T : AvertStrategy { private readonly T _strategy; // 策略实例 /// /// 初始化 Kean.Domain.Task.Strategies.AvertContext 类的新实例 /// public AvertContext(IServiceProvider serviceProvider) => _strategy = Activator.CreateInstance(typeof(T), typeof(T).GetConstructors().First().GetParameters().Select(p => serviceProvider.GetService(p.ParameterType)).ToArray()) as T; /// /// 生成用于避让的移库命令 /// /// 避让货位 /// 移库命令 public Task AutoCommand(Cell cell) => _strategy.AutoCommand(cell); } }