public override object Clone()
        {
            var newSpec = new TraySpec(_ownerType, SpecName, _features);

            //newSpec.ProductCount = ProductCount;
            return(newSpec);
        }
        public static ProductTray CreateProductTray(TraySpec traySpec)
        {
            var newProductTray = new ProductTray {
                TraySpec = (TraySpec)traySpec.Clone()
            };


            return(newProductTray);
            //return null;
        }
        public bool CouldContainProduct(Product product)
        {
            var productType = product.ProductType;

            foreach (var feature in TraySpec.GetFeatures())
            {
                if (!feature.Value.Equals(productType.GetFeature(feature.Key)))
                {
                    return(false);
                }
            }
            return(true);
        }
        public string ToJson()
        {
            var strJson = $"{{\"ProductTrayID\":\"{Id}\",\"Specs\":[{TraySpec.ToJson()}]}}";

            return(strJson);
        }
        private readonly List <Product> _units = new List <Product>(); // 产品集合对象

        //private ProductTrayType _trayType;

        public ProductTray(TraySpec traySpec = null)
        {
            TraySpec = traySpec;
        }