Files
Samuele E. Locatelli 82bdb17474 pulizia aree commentate
2019-09-13 17:22:50 +02:00

135 lines
3.2 KiB
C#

using System;
using System.IO;
using System.Xml.Serialization;
namespace SCMA
{
#region -- ModelDesign Class --
/// <summary>
/// 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
/// </summary>
[Serializable]
[XmlRoot("ModelDesign")]
public class ModelDesign
{
cMachine mMachine;
/// <summary>
/// init conf adapter
/// </summary>
public ModelDesign()
{
}
/// <summary>
/// Classe di base oggetti OPC-UA in Datamodel da deserializzare
/// </summary>
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; }
}
/// <summary>
/// Oggetto più esterno Machine
/// </summary>
[Serializable]
public class cMachine
{
public Property Model { get; set; }
}
public cMachine Machine
{
get
{
return mMachine;
}
set
{
mMachine = value;
}
}
/// <summary>
/// Serializzazione XML dell'oggetto conf dell'adapter
/// </summary>
/// <param name="file"></param>
/// <param name="c"></param>
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();
}
/// <summary>
/// deserializzazione oggetto conf adapter
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
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;
}
/// <summary>
/// restitusice forma XML grezza del file
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
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
}