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);
}
}
|