Exemple #1
0
        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);
        }