diff options
Diffstat (limited to 'WindowsFormsApplication2/WindowsFormsApplication2/Customer.cs')
-rw-r--r-- | WindowsFormsApplication2/WindowsFormsApplication2/Customer.cs | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/WindowsFormsApplication2/WindowsFormsApplication2/Customer.cs b/WindowsFormsApplication2/WindowsFormsApplication2/Customer.cs new file mode 100644 index 0000000..d636af5 --- /dev/null +++ b/WindowsFormsApplication2/WindowsFormsApplication2/Customer.cs @@ -0,0 +1,80 @@ +using System; +using System.Xml.Serialization; // Does XML serializing for a class. +using System.Drawing; // Required for storing a Bitmap. +using System.IO; // Required for using Memory stream objects. +using System.ComponentModel; // Required for conversion of Bitmap objects. + +namespace disc1 +{ + /// <summary> + /// Customer test class to demonstrate how to include custom metadata attributes in a + /// class so that it can be serialized/deserialized to/from XML. + /// + /// References: + /// XML Serialization at http://samples.gotdotnet.com/: + /// http://samples.gotdotnet.com/QuickStart/howto/default.aspx?url=/quickstart/howto/doc/xmlserialization/rwobjfromxml.aspx + /// + /// How do I serialize an image file as XML in .NET? + /// http://www.perfectxml.com/Answers.asp?ID=2 + /// </summary> + + // Set this 'Customer' class as the root node of any XML file its serialized to. + [XmlRootAttribute("Customer", Namespace="", IsNullable=false)] + + //Each customer here refers to the picture and properties of each cell of the TableLayoutPanel + public class Customer + { + private Bitmap picture; + + /// <summary> + /// Default constructor for this class (required for serialization). + /// </summary> + public Customer() + { + } + + // Set this 'DateTimeValue' field to be an attribute of the root node. + + // By NOT specifing any custom Metadata Attributes, fields will be created + // as an element by default. + public string CustomerName; + public int ColorName; + public int PanelPadding; + + // Set serialization to IGNORE this field (ie. not add it to the XML). + [XmlIgnoreAttribute()] + public bool CustomerPaid; + + // Set serialization to IGNORE this property because the 'PictureByteArray' property + // is used instead to serialize the 'Picture' Bitmap as an array of bytes. + [XmlIgnoreAttribute()] + public Bitmap Picture + { + get { return picture; } + set { picture = value; } + } + public int Index; + // Serializes the 'Picture' Bitmap to XML. + [XmlElementAttribute("Picture")] + public byte[] PictureByteArray + { + get + { + if (picture != null) + { + TypeConverter BitmapConverter = TypeDescriptor.GetConverter(picture.GetType()); + return (byte[]) BitmapConverter.ConvertTo(picture, typeof(byte[])); + } + else + return null; + } + set + { + if (value != null) + picture = new Bitmap(new MemoryStream(value)); + else + picture = null; + } + } + } +} |