- Main Page
- Classes
- Files

- File List

# C:/Users/Andreas Schiffler/Desktop/SVN/NewGamePhysics/NewGamePhysics/Utilities/SerializableUri.cs

    00001 ﻿using System;
    00002 using System.Collections.Generic;
    00003 using System.Linq;
    00004 using System.Text;
    00005 using System.Xml.Serialization;
    00006
    00007 namespace NewGamePhysics.Utilities
    00008 {
    00012     public sealed class SerializableUri : IXmlSerializable
    00013     {
    00017         private Uri _uri = null;
    00018
    00022         public Uri Uri
    00023         {
    00024             get
    00025             {
    00026                 return this._uri;
    00027             }
    00028             set
    00029             {
    00030                 this._uri = value;
    00031             }
    00032         }
    00033
    00037         public SerializableUri()
    00038         {
    00039         }
    00040
    00045         public SerializableUri(Uri uri)
    00046         {
    00047             if (uri == null)
    00048             {
    00049                 throw new ArgumentNullException("uri", "Uri cannot be null.");
    00050             }
    00051
    00052             this._uri = uri;
    00053         }
    00054
    00059         public SerializableUri(string uri)
    00060         {
    00061             if (String.IsNullOrEmpty(uri))
    00062             {
    00063                 throw new ArgumentNullException("uri", "Uri cannot be null.");
    00064             }
    00065
    00066             this._uri = new Uri(uri);
    00067         }
    00068
    00074         public static implicit operator Uri(SerializableUri uri)
    00075         {
    00076             return uri.Uri;
    00077         }
    00078
    00084         public static implicit operator SerializableUri(Uri uri)
    00085         {
    00086             return new SerializableUri(uri);
    00087         }
    00088
    00089         #region IXmlSerializable_members
    00090
    00095         System.Xml.Schema.XmlSchema IXmlSerializable.GetSchema()
    00096         {
    00097             return null;
    00098         }
    00099
    00104         void IXmlSerializable.ReadXml(System.Xml.XmlReader reader)
    00105         {
    00106             try
    00107             {
    00108                 this._uri = new Uri(reader.ReadString());
    00109             }
    00110             catch (Exception)
    00111             {
    00112                 this._uri = null;
    00113             }
    00114         }
    00115
    00120         void IXmlSerializable.WriteXml(System.Xml.XmlWriter writer)
    00121         {
    00122             writer.WriteString((this._uri != null) ? this._uri.AbsoluteUri : "");
    00123         }
    00124
    00125         #endregion
    00126
    00131         public override string ToString()
    00132         {
    00133             return (this._uri != null) ? this._uri.AbsoluteUri : null;
    00134         }
    00135     }
    00136 }