1using System; 2using System.Collections.Generic; 3using System.Text; 4using System.Xml.Serialization; 5using System.IO; 6 7namespace ALittleClass ...{ 8 class Program ...{ 9 static void Main ( string[ ] args ) ...{ 10 // create the XmlSerializerFactor 11 XmlSerializerFactory factory = new XmlSerializerFactory ( ); 12 // Create the memory stream that will be used to store the serialized data 13 MemoryStream ms = new MemoryStream ( ); 14 // create the serializer 15 XmlSerializer serializer = factory.CreateSerializer ( typeof ( Settings ) ); 16 using ( ms ) ...{ 17 // create the settings class 18 Settings settings = new Settings ( ); 19 // set some values. 20 settings.Name = "Ryan"; 21 settings.ShowName = false; 22 settings.Friends.Add ( "Nick" ); 23 settings.Friends.Add ( "Scott" ); 24 settings.Friends.Add ( "Kevin" ); 25 settings.Friends.Add ( "Jeff" ); 26 settings.Friends.Add ( "Jon" ); 27 // display when the settings class was created 28 Console.WriteLine ( "Settings Created at {0}\n", settings.TimeStamp.ToString ( ) ); 29 // serialize the settings 30 serializer.Serialize ( ms, settings ); 31 32 // reset the position of the memory stream 33 ms.Position = 0; 34 // create a stream reader to read the xml 35 StreamReader sr = new StreamReader ( ms ); 36 using ( sr ) ...{ 37 // output the xml 38 while ( !sr.EndOfStream ) 39 Console.WriteLine ( sr.ReadLine ( ) ); 40 // reset the position again so the xml can be deserialized 41 ms.Position = 0; 42 Console.WriteLine ( "-------" ); 43 // sleep for 5 seconds so we can see that the setting class was recreated again at a later time 44 System.Threading.Thread.Sleep ( 5000 ); 45 // create an xml text reader so we can check that it can be deserialized 46 System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader ( ms ); 47 using ( reader ) ...{ 48 // destroy our original settings object 49 settings = null; 50 // check that we can deserialize 51 if ( serializer.CanDeserialize ( reader ) ) ...{ 52 // deserialize the xml to a Settings object 53 settings = serializer.Deserialize ( reader ) as Settings; 54 // ouput the values in the settings object 55 Console.WriteLine ( "Name: {0}", settings.Name ); 56 Console.WriteLine ( "ShowName: {0}", settings.ShowName ); 57 Console.WriteLine ( "Friends:" ); 58 foreach ( string friend in settings.Friends ) ...{ 59 Console.WriteLine ( "\t{0}", friend ); 60 } 61 // display when this settings object was created... should be 5 seconds after the first one 62 Console.WriteLine ( "Settings Created at {0}", settings.TimeStamp.ToString ( ) ); 63 } else // we had a problem 64 Console.WriteLine ( "Unable to load in settings xml" ); 65 } 66 } 67 } 68 // wait for enter 69 Console.ReadLine ( ); 70 } 71 } 72 73 74 // This attribute sets what the expected root element name will be. 75 [XmlRoot ( "MySettings" )] 76 public class Settings ...{ 77 private string _name; 78 private bool _showName = true; 79 private List<string> _friends; 80 private DateTime _creationTime = DateTime.MinValue; 81 public Settings ( ) ...{ 82 _friends = new List<string> ( ); 83 this.TimeStamp = DateTime.Now; 84 } 85 // This attribute sets that all the items in the collection will be contained in an element named Friends 86 [XmlArray ( "Friends" ), 87 // This attribute sets that each item in the collection will have its own element named Friend 88 XmlArrayItem ( "Friend" )] 89 public List<string> Friends ...{ 90 get ...{ return _friends; } 91 set ...{ _friends = value; } 92 } 93 // This attribute sets that this property will be an attribute of the root element 94 [XmlAttribute ( "ShowName" )] 95 public bool ShowName ...{ 96 get ...{ return _showName; } 97 set ...{ _showName = value; } 98 } 99 100 // This attribute sets that this property will be an element named Name 101 [XmlElement ( "Name" )] 102 public string Name ...{ 103 get ...{ return _name; } 104 set ...{ _name = value; } 105 } 106 // This attribute sets that this property will not be serialized. 107 [XmlIgnore] 108 public DateTime TimeStamp ...{ 109 get ...{ return this._creationTime; } 110 set ...{ this._creationTime = value; } 111 } 112 } 113} 114
Settings Created at 9/28/2007 7:06:29 PM<?xml version="1.0"?><MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ShowName="false"> <Friends> <Friend>Nick</Friend> <Friend>Scott</Friend> <Friend>Kevin</Friend> <Friend>Jeff</Friend> <Friend>Jon</Friend> </Friends> <Name>Ryan</Name></MySettings>-------Name: RyanShowName: FalseFriends: Nick Scott Kevin Jeff JonSettings Created at 9/28/2007 7:06:34 PM
1using System; 2using System.Globalization; 3 4namespace ALittleClass ...{ 5 class Program ...{ 6 static void Main ( string[] args ) ...{ 7 // Get the Current System TimeZone 8 TimeZone timezone = TimeZone.CurrentTimeZone; 9 Console.WriteLine ( "Standard Name: {0}", timezone.StandardName );10 Console.WriteLine ( "Daylight Name: {0}", timezone.DaylightName );11 // Get if currently in DLS12 Console.WriteLine ( "Is {1} in daylight savings time? {0}", timezone.IsDaylightSavingTime ( DateTime.Now ), DateTime.Now);1314 Console.WriteLine ( "Daylight Saving time for {0}", DateTime.Now.Year );15 // Gets when Daylight savings changes16 DaylightTime daylightTime = timezone.GetDaylightChanges ( DateTime.Now.Year );17 Console.WriteLine ( "DaylightTime Starts on {0}", daylightTime.Start.ToString ( ) );18 Console.WriteLine ( "DaylightTime Ends on {0}", daylightTime.End.ToString ( ) );1920 Console.WriteLine ( "Delta: {0}", daylightTime.Delta );2122 // Get UTC Offset23 Console.WriteLine ( "UTC offset: {0}", timezone.GetUtcOffset ( DateTime.Now ) );24