/// <summary> /// Write an object. /// </summary> /// <param name="obj">The object to write.</param> public void WriteObject(IEncogPersistedObject obj) { IPersistor persistor = obj.CreatePersistor(); if (persistor == null) { String str = "Can't find a persistor for object of type " + obj.GetType().Name; #if logging if (this.logger.IsErrorEnabled) { this.logger.Error(str); } #endif throw new PersistError(str); } persistor.Save(obj, this.xmlOut); }
/// <summary> /// Create a persistor object. These objects know how to persist /// certain types of classes. /// </summary> /// <param name="className">The name of the class to create a persistor for.</param> /// <returns>The persistor for the specified class.</returns> public static IPersistor CreatePersistor(String className) { // handle any hard coded ones if (className.Equals("TrainingData")) { return(new BasicNeuralDataSetPersistor()); } String name = "Encog.Persist.Persistors." + className + "Persistor"; IPersistor persistor = (IPersistor)Assembly.GetExecutingAssembly().CreateInstance(name); // try another way if (persistor == null) { String type = ReflectionUtil.ResolveEncogClass(className); IEncogPersistedObject temp = (IEncogPersistedObject)ReflectionUtil.LoadObject(type); persistor = temp.CreatePersistor(); } return(persistor); }
/// <summary> /// Perform a deep copy. /// Silverlight version. /// </summary> /// <param name="oldObj">The old object.</param> /// <returns>The new object.</returns> static public IEncogPersistedObject DeepCopy(IEncogPersistedObject oldObj) { bool replacedName = false; // encog objects won't save without a name if (oldObj.Name == null) { replacedName = true; oldObj.Name = "temp"; } // now make the copy MemoryStream mstream = new MemoryStream(); WriteXML xmlOut = new WriteXML(mstream); IPersistor persistor = oldObj.CreatePersistor(); xmlOut.BeginDocument(); persistor.Save(oldObj, xmlOut); xmlOut.EndDocument(); // now read it back mstream.Position = 0; ReadXML xmlIn = new ReadXML(mstream); xmlIn.ReadToTag(); IEncogPersistedObject result = persistor.Load(xmlIn); mstream.Close(); // put the name back to null if we changed it if (replacedName) { oldObj.Name = null; result.Name = null; } return(result); }
/// <summary> /// Write an object. /// </summary> /// <param name="obj">The object to write.</param> public void WriteObject(IEncogPersistedObject obj) { IPersistor persistor = obj.CreatePersistor(); if (persistor == null) { String str = "Can't find a persistor for object of type " + obj.GetType().Name; #if logging if (this.logger.IsErrorEnabled) { this.logger.Error(str); } #endif throw new PersistError(str); } persistor.Save(obj, this.xmlOut); }
/// <summary> /// Perform a deep copy. /// Silverlight version. /// </summary> /// <param name="oldObj">The old object.</param> /// <returns>The new object.</returns> static public IEncogPersistedObject DeepCopy(IEncogPersistedObject oldObj) { bool replacedName = false; // encog objects won't save without a name if (oldObj.Name == null) { replacedName = true; oldObj.Name = "temp"; } // now make the copy MemoryStream mstream = new MemoryStream(); WriteXML xmlOut = new WriteXML(mstream); IPersistor persistor = oldObj.CreatePersistor(); xmlOut.BeginDocument(); persistor.Save(oldObj, xmlOut); xmlOut.EndDocument(); // now read it back mstream.Position = 0; ReadXML xmlIn = new ReadXML(mstream); xmlIn.ReadToTag(); IEncogPersistedObject result = persistor.Load(xmlIn); mstream.Close(); // put the name back to null if we changed it if (replacedName) { oldObj.Name = null; result.Name = null; } return result; }