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 }