using Kean.Domain.Stock.Enums; using System; using System.Linq; using System.Threading.Tasks; namespace Kean.Domain.Stock.Strategies { /// /// 库存状态判定策略上下文 /// public sealed class StateContext where T : StateStrategy { private readonly T _strategy; // 策略实例 /// /// 初始化 Kean.Domain.Stock.Strategies.StateContext 类的新实例 /// public StateContext(IServiceProvider serviceProvider) => _strategy = Activator.CreateInstance(typeof(T), typeof(T).GetConstructors().First().GetParameters().Select(p => serviceProvider.GetService(p.ParameterType)).ToArray()) as T; /// /// 判定库存状态 /// /// 托盘条码 /// 库存状态 public Task GetState(string barcode) => _strategy.GetState(barcode); } }