public void startmodel(String filePath) { String file = null; try { file = System.IO.File.ReadAllText(filePath); AbstractModel model = (AbstractModel)AbstractStorable.newInstance(JObject.Parse(file)); model.startRun(); } catch (Exception e) { Console.WriteLine(e.Message); } }
/// <summary> /// Создание объекта из сохраненного ранее состояния в JSON объекте. Сначала создается экземпляр класса, затем /// восстанавливается его состояние методом restore(). Этот метод также за восстановление всех простых полей и сложных объектов, /// которые принадлежат текущему объекту. Восстановление объекта можно представить в виде дерева. Далее проходит валидация созданного /// объекта и вызввается метод init(), который подготовит объекты к работе. Метод init() вызывается ПОСЛЕ того, как все объекты будут /// проинициализированны из-за специфики метода restore() /// </summary> /// <param name="state"> сохраненное состояние объекта </param> /// <returns></returns> public static AbstractStorable newInstance(JObject state) { Type type = MyClassLoader.getTypeByName((String)state.GetValue(NAME)); if (type == null) { throw new CreateModelException((String)state.GetValue(NAME) + " create instance exeption"); } System.Reflection.ConstructorInfo ci = type.GetConstructor(new Type[] { }); AbstractStorable instance = (AbstractStorable)ci.Invoke(new object[] { }); instance.restore(state); instance.validate(); instance.init(); return(instance); }