using System;
using System.IO;
using System.Xml.Serialization;
namespace SCMA
{
#region -- ModelDesign Class --
///
/// Classe per serializzazione / deserializzazione del datamodel x le informazioni necessarie x ADAPTER OPC-UA 2.1+
///
/// ref: http://www.cambiaresearch.com/articles/33/how-can-i-easily-manage-an-xml-configuration-file-in-dotnet
///
[Serializable]
[XmlRoot("ModelDesign")]
public class ModelDesign
{
cMachine mMachine;
///
/// init conf adapter
///
public ModelDesign()
{
}
///
/// Classe di base oggetti OPC-UA in Datamodel da deserializzare
///
public class ouBaseObj
{
//[XmlAttribute("SymbolicName")]
[XmlAttribute]
public string SymbolicName { get; set; }
[XmlAttribute("BrowseName")]
public string BrowseName { get; set; }
[XmlAttribute("DataType")]
public string DataType { get; set; }
[XmlAttribute("ValueRank")]
public string ValueRank { get; set; }
}
public class Property : ouBaseObj
{
[XmlAttribute("Value")]
public string Value { get; set; }
}
public class ouVariable : ouBaseObj
{
[XmlAttribute("Units")]
public string Units { get; set; }
}
///
/// Oggetto più esterno Machine
///
[Serializable]
public class cMachine
{
public Property Model { get; set; }
}
public cMachine Machine
{
get
{
return mMachine;
}
set
{
mMachine = value;
}
}
///
/// Serializzazione XML dell'oggetto conf dell'adapter
///
///
///
public static void Serialize(string file, ModelDesign c)
{
// prima provo a creare il file vuoto...
if (!File.Exists(file))
{
string dirPath = file.Substring(0, file.LastIndexOf('\\'));
// verifico directory
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
}
// salvo effettivamente file...
XmlSerializer xs = new XmlSerializer(c.GetType());
StreamWriter writer = File.CreateText(file);
xs.Serialize(writer, c);
writer.Flush();
writer.Close();
}
///
/// deserializzazione oggetto conf adapter
///
///
///
public static ModelDesign Deserialize(string file)
{
XmlSerializer xs = new XmlSerializer(typeof(ModelDesign));
StreamReader reader = File.OpenText(file);
ModelDesign c = (ModelDesign)xs.Deserialize(reader);
reader.Close();
return c;
}
///
/// restitusice forma XML grezza del file
///
///
///
public static string rawXml(string file)
{
string answ = "";
XmlSerializer xs = new XmlSerializer(typeof(ModelDesign));
StreamReader reader = File.OpenText(file);
answ = reader.ReadToEnd();
reader.Close();
return answ;
}
}
#endregion
}