Ich dachte, dass ich die IP-Adresse in einen String wandle, den String serialisiere und beim Deserialisieren den String wieder in die IP-Adresse schreibe. Habe hierfür ein kleines ablauffähiges Konsolenprogramm, dann seht ihr was ich meine:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| using System; using System.Net; using System.Xml.Serialization; using System.IO;
namespace IpAdressSerialisierung { class Program { static void Main(string[] args) { try { byte[] testByte = new byte[] { 192, 168, 2, 1 }; Object2Serialize SerObject = new Object2Serialize(); SerObject.RealIpAddress = new IPAddress(testByte);
XmlSerializer xmlser = new XmlSerializer(typeof(Object2Serialize)); StreamWriter strWr = new StreamWriter("D:\\test.xml"); xmlser.Serialize(strWr, SerObject); strWr.Close();
XmlSerializer xmldeser = new XmlSerializer(typeof(Object2Serialize)); Object2Serialize deserObject = new Object2Serialize(); StreamReader strRea = new StreamReader("D:\\test.xml"); deserObject = xmldeser.Deserialize(strRea) as Object2Serialize; } catch (Exception e) { Console.WriteLine(e.Message); } } }
[Serializable()] public class Object2Serialize { private IPAddress realIpAddress;
[XmlIgnore()] public IPAddress RealIpAddress { get { return realIpAddress; } set { realIpAddress = value; sIpAddress = value.ToString(); } }
private string sIpAddress;
[XmlElement(ElementName = "IP-Adresse")] public string SIpAdress { get { return sIpAddress; } set { sIpAddress = value;
if (realIpAddress == null) { realIpAddress = IPAddress.Parse(value); } } } } } |
Das funktioniert eigentlich genauso, wie ich es schlussendlich auch haben möchte. Ich habe in meiner Klasse aber mehrere IP-Adress-Objekte, von dem her müsste ich für jede wieder einen String hinzufügen, den ich wieder zum Serialisieren benötige. Das ist ja umständlich, und da wollte ich nach einer kürzeren, besseren Lösung fragen...
danielf hat folgendes geschrieben: |
keine Ahnung, kannst es ja testen und es uns dann wissen lassen. |
Das mit dem Ableiten habe ich auch versucht, ich weiß aber nicht, was ich da mit der Loopback-Adresse soll. Ich möchte eine eigene Adresse übergeben, so wie ich das oben in meinem Beispiel mache.
Hoffe das Ganze ist jetzt etwas klarer.
Gruß Gabe