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