Esempio n. 1
0
        private OrderMenu()
        {
            //加载配置文件
            XMLTool  xmlTool  = new XMLTool("CfgFiles\\foodMenu.xml");
            XElement xRoot    = xmlTool.LoadXml();
            var      foodList = xRoot.Elements("Food");
            Type     type     = typeof(AbstractFood);

            foreach (var item in foodList)
            {
                //1:找到类的名称
                var csName = item.Element("FoodName").Value;
                //2:通过反射来实例化对象
                Assembly     assembly = Assembly.Load("NineFive.Model");
                AbstractFood food     = assembly.CreateInstance($"NineFive.Model.OrderSystem.{csName}Food") as AbstractFood;
                if (food == null)
                {
                    continue;
                }
                //3:赋值
                foreach (var propItem in type.GetProperties())
                {
                    var propValue = item.Element(propItem.Name)?.Value;
                    if (!string.IsNullOrEmpty(propValue))
                    {
                        propItem.SetValue(food, Convert.ChangeType(propValue, propItem.PropertyType), null);
                    }
                }
                AllFoods.Add(food);
            }
        }