XML class serializer in C#

Filed Under (c#) by The Chef on 06-06-2009

Tagged Under : , , , ,

Here it is a short class very useful for serializing and deserializing. This is a good for settings file or configuration files.

using System.Xml.Serialization;
using System.IO;
using System.Text;

namespace XMLData
{
    public static class ObjectXMLSerializer<T> where T : class
    {
        public static T Load(string path)
        {
            T mRet = null;

            using (TextReader textReader = new StreamReader(path))
            {
                XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
                mRet = mXmlSerializer.Deserialize(textReader) as T;
            }

            return mRet;
        }

        public static void Save(T serializableObject, string path)
        {
            using (TextWriter mTextWriter = new StreamWriter(path))
            {
                XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
                mXmlSerializer.Serialize(mTextWriter, serializableObject);
            }
        }
        public static T LoadString(string mString)
        {
            T mRet = null;

            using (MemoryStream textReader = new MemoryStream(Encoding.ASCII.GetBytes(mString)))
            {
                XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
                mRet = mXmlSerializer.Deserialize(textReader) as T;
            }

            return mRet;
        }
    }
}

Here it is a short usage example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            links lnk = new links();
            lnk.str = "something";
            lnk.integer = 23;
            lnk.floatnumber = 0.23f;
            lnk.stringlist.Add("element 1");
            lnk.stringlist.Add("element 2");
            lnk.stringlist.Add("element 3");
            //save class to xml
            XMLData.ObjectXMLSerializer<links>.Save(lnk, @"c:\test.xml");
            //load class from xml
            lnk = XMLData.ObjectXMLSerializer<links>.Load(@"c:\test.xml");
        }

    }

    [Serializable]
    public class links
    {
        public String str;
        public int integer;
        public float floatnumber;
        public List<string> stringlist = new List<string>();
    }
}

and this is the xml it produces:

<?xml version="1.0" encoding="utf-8"?>
<links xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <str>something</str>
  <integer>23</integer>
  <floatnumber>0.23</floatnumber>
  <stringlist>
    <string>element 1</string>
    <string>element 2</string>
    <string>element 3</string>
  </stringlist>
</links>

Finding DNS servers using c#

Filed Under (c#, net) by The Chef on 06-06-2009

Tagged Under : , ,

Every computer connected to the internet must interrogate a DNS server in order to resolve domain names to ip addresses. To find the DNS server addresses your computer uses to resolve names, either it has a dhcp or static ip address, you can use the following piece of code. I wrapped all around a nice static class for ease of use.

   public static class DNSFinder
   {
       private static List<String> mServers = new List<string>();
       public static List<String> Servers
       {
           get
           {
               RegistryKey start = Registry.LocalMachine;
               string DNSservers = @"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters";
               RegistryKey DNSserverKey = start.OpenSubKey(DNSservers);
               if (DNSserverKey != null)
               {
                   // Static ip address
                   string serverlist = (string)DNSserverKey.GetValue("NameServer");
                   string[] servers = serverlist.Split(' ');
                   foreach (string server in servers)
                   {
                       mServers.Add(server);
                   }
                   //dhcp assigned address
                   serverlist = (string)DNSserverKey.GetValue("DhcpNameServer");
                   servers = serverlist.Split(' ');
                   foreach (string server in servers)
                   {
                       mServers.Add(server);
                   }
                   start.Close();
               }
               DNSserverKey.Close();
               return mServers;
           }
       }

How to calculate md5 of a string in C#

Filed Under (c#, cryptography) by The Chef on 26-05-2009

Tagged Under : , , ,

If you have ever dared to write the md5 hashing algorithm in C#, you better stay calm because the MS guys thought of everything. It’s all in the framework. With just 2 lines of code the job is done. Take a look at the following piece of code:

String str="some text here";
MD5 md5 = new MD5CryptoServiceProvider();
String Hash = BitConverter.ToString(md5.ComputeHash(ASCIIEncoding.Default.GetBytes(str))).Replace("-","");

Easy, isn’t it ?