using Kean.Domain.Task.Models; using System; using System.Linq; using System.Threading.Tasks; namespace Kean.Domain.Task.Strategies { /// /// 上架策略上下文 /// public sealed class InfeedContext where T : InfeedStrategy { private readonly T _strategy; // 策略实例 /// /// 初始化 Kean.Domain.Task.Strategies.InfeedContext 类的新实例 /// public InfeedContext(IServiceProvider serviceProvider) => _strategy = Activator.CreateInstance(typeof(T), typeof(T).GetConstructors().First().GetParameters().Select(p => serviceProvider.GetService(p.ParameterType)).ToArray()) as T; /// /// 获取自动分配的目标货位 /// /// 托盘类型 /// 任务起始位置 /// 负载规格 /// 自动分配的目标货位 public Task AutoDestination(string pallet, Station original, int? spec, int? goodsid) => _strategy.AutoDestination(pallet, original, spec,goodsid); } }