NailsConfig.cs
using Alife.Agents;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace NailsLib.Data
{
[Serializable]
public clast NailsConfig : ISerializable
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public List Agents;
public List Styles;
public NailsConfig()
{
}
public NailsStyle GetStyle(string aStyleName)
{
var styles = this.Styles.Where(t => t.Name == aStyleName).ToList();
if (styles == null || styles.Count < 1)
{
return null;
}
return styles[0];
}
/**
* Static method to read configuration from an XML file and return a NailsConfig object.
* 1upD
*/
public static NailsConfig ReadConfiguration(string filepath)
{
NailsConfig config = null;
try
{
log.Info(string.Format("Loading Nails configuration from file: {0}", filepath));
XmlSerializer serializer = new XmlSerializer(typeof(NailsConfig));
StreamReader reader = new StreamReader(filepath);
config = (NailsConfig)serializer.Deserialize(reader);
reader.Close();
}
catch (Exception e)
{
log.Error(string.Format("Error reading Nails configuration in file: {0}", filepath), e);
}
return config;
}
/**
* Static method to write Nails configuration to a file
* 1upD
*/
public static void WriteConfiguration(string filepath, NailsConfig config)
{
try
{
log.Info(string.Format("Writing Nails configuration to file: {0}", filepath));
XmlSerializer serializer = new XmlSerializer(typeof(NailsConfig));
StreamWriter writer = new StreamWriter(filepath);
serializer.Serialize(writer, config);
writer.Close();
}
catch (Exception e)
{
log.Error(string.Format("Error writing Nails configuration to file: {0}", filepath), e);
}
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
throw new NotImplementedException();
}
}
}