<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Duff's Blog</title>
	<atom:link href="http://imduff.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://imduff.wordpress.com</link>
	<description>WPF, .NET, Web &#38; more</description>
	<lastBuildDate>Tue, 24 May 2011 19:24:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='imduff.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Duff's Blog</title>
		<link>http://imduff.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://imduff.wordpress.com/osd.xml" title="Duff&#039;s Blog" />
	<atom:link rel='hub' href='http://imduff.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Abstract Factory</title>
		<link>http://imduff.wordpress.com/2009/02/01/abstract-factory/</link>
		<comments>http://imduff.wordpress.com/2009/02/01/abstract-factory/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 05:34:52 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=46</guid>
		<description><![CDATA[The abstract factory is a software design pattern used to create different family objects. The important thing here is that those classes must be related, in order to be used with an abstract class. My example consist of 2 classes, named Circle and Rectangle. This 2 classes have something in common, they&#8217;re geometric figures and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=46&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">The abstract factory is a software design pattern used to create different family objects. The important thing here is that those classes must be related, in order to be used with an abstract class.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">My example consist of 2 classes, named Circle and Rectangle. This 2 classes have something in common, they&#8217;re geometric figures and for example, both have an area formula. </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">I have seen a couple of examples in which the author just set the abstract class for the concrete classes. With this approach we will need to create an instance of the class based on the abstract class.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">E.g.<span> </span>GeometricFigureAbstractClass obj = new Circle() (In this case, circle inherits from GeometricFigureAbstractClass, see example below).</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">I think this is not good enough, if all the classes contains in some way related methods why not just create a concrete and general class that will handle all of this behavior.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">Now, first of all create the abstract class named GeometricFigure:</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:green;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:gray;"><span> </span>///</span><span style="font-size:10pt;font-family:&quot;color:green;"> </span><span style="font-size:10pt;font-family:&quot;color:gray;">&lt;summary&gt;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Base class for all the geometric figures.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">abstract</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">GeometricFigure</span> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{<span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">abstract</span> <span style="color:blue;">string</span> AreaFormula();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:green;"><span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">Now the concrete classes for that will inherit from GeometricFigure, in this case Circle and Rectangle.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:green;"><span> </span><span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:gray;"><span> </span>///</span><span style="font-size:10pt;font-family:&quot;color:green;"> </span><span style="font-size:10pt;font-family:&quot;color:gray;">&lt;summary&gt;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Circle concrete class,<span> </span>who inherits from GeometricFigures</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">Circle</span> : <span style="color:#2b91af;">GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">string</span> AreaFormula()</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> <span style="color:#a31515;">&#8220;pi * radius ^ 2&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Rectangle concrete class,<span> </span>who inherits from GeometricFigures</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">Rectangle</span> : <span style="color:#2b91af;">GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">string</span> AreaFormula()</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> <span style="color:#a31515;">&#8220;length * width&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">Now it&#8217;s time to create the factory, the class that will be in charge of creating the expected class from our request, using the enumerator we just created above.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:green;"><span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:gray;"><span> </span>///</span><span style="font-size:10pt;font-family:&quot;color:green;"> </span><span style="font-size:10pt;font-family:&quot;color:gray;">&lt;summary&gt;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Class that creates an instance of a class that inherits from <span> </span>GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">GeometricFigureFactory</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Returns the concrete class instance that inherits from GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;param name=&#8221;type&#8221;&gt;</span><span style="color:green;">The type of the concrete class to <span> </span>instantiate</span><span style="color:gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:#2b91af;">GeometricFigure</span> <span> </span>ReturnGeometricFigure(<span style="color:#2b91af;">GeometricFigureType</span> type)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigure</span> figure;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">switch</span> (type)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{ </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">case</span> <span style="color:#2b91af;">GeometricFigureType</span>.Circle:</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>figure = <span style="color:blue;">new</span> <span style="color:#2b91af;">Circle</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">default</span>:</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>figure = <span style="color:blue;">new</span> <span style="color:#2b91af;">Rectangle</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> figure;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">This class contains a<span> </span>simple method called ReturnGeometricFigure that expects an enumeration type. This enum type will be the key in order to create the instance we requested, for example, if we need to create an instance of the class Circle just send the Circle enum type. It will return an instance of Circle, that inherits from GeometricFigure.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;"><span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">This is enough as an abstract factory, but we can go further.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">Lets create a Manager, a class that will be used to get the information from the every single class of factory using one instance, my manager instance.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:green;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Manager class that simplifies the abstract factory use. Can use all the classes that inherits from GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> using the Factory class.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">GeometricFigureManager</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">string</span> GetAreaFormula(<span style="color:#2b91af;">GeometricFigureType</span> Type)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigureFactory</span> factory = <span style="color:blue;">new</span> <span style="color:#2b91af;">GeometricFigureFactory</span>();</span></p>
<p class="MsoNormal" style="margin-right:-9pt;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigure</span> figure = factory.ReturnGeometricFigure(Type);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> figure.AreaFormula();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">As I said before, the Circle and the Rectangle both contains an area right?. What if I want to get the formula of the circle and the rectangle? we will need to create both instances, but with this manager we can have both. The Manager receives the GeometricFigureType, the manager creates the instance using the factory and will send the formula from the instantiated class.</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;">In fact, we can use a Singleton pattern in order to have only one instance of the Manager in the whole application <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</span></p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:blue;">using</span><span style="font-size:10pt;font-family:&quot;"> System;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:blue;">using</span><span style="font-size:10pt;font-family:&quot;"> System.Collections.Generic;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:blue;">using</span><span style="font-size:10pt;font-family:&quot;"> System.Linq;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:blue;">using</span><span style="font-size:10pt;font-family:&quot;"> System.Text;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:blue;">namespace</span><span style="font-size:10pt;font-family:&quot;"> AbstractFactorySample</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;">{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">class</span> <span style="color:#2b91af;">Program</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">static</span> <span style="color:blue;">void</span> </span><span style="font-size:10pt;font-family:&quot;">Main</span><span style="font-size:10pt;font-family:&quot;">(<span style="color:blue;">string</span>[] args)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Regular abstract method way</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Create a circle instance, get area</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigure</span> circle = <span style="color:blue;">new</span> <span style="color:#2b91af;">Circle</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">string</span> circleFormula = circle.AreaFormula();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Create a rectangle instance, get area</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigure</span> rect = <span style="color:blue;">new</span> <span style="color:#2b91af;">Rectangle</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span> </span><span style="color:blue;">string</span> rectFormula = rect.AreaFormula();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//All this can be reduced to a single object</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigureManager</span> manager = <span style="color:blue;">new</span> <span style="color:#2b91af;">GeometricFigureManager</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">var</span> formulaRect = manager.GetAreaFormula(<span style="color:#2b91af;">GeometricFigureType</span>.Rectangle);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">var</span> formulaCirc = manager.GetAreaFormula(<span style="color:#2b91af;">GeometricFigureType</span>.Circle);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Base class for all the geometric figures.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">abstract</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">GeometricFigure</span> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">abstract</span> <span style="color:blue;">string</span> AreaFormula();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Circle concrete class,<span> </span>who inherits from GeometricFigures</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">Circle</span> : <span style="color:#2b91af;">GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">string</span> AreaFormula()</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span> </span><span style="color:blue;">return</span> <span style="color:#a31515;">&#8220;pi * radius ^ 2&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Rectangle concrete class,<span> </span>who inherits from GeometricFigures</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">Rectangle</span> : <span style="color:#2b91af;">GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">string</span> AreaFormula()</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> <span style="color:#a31515;">&#8220;length * width&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Class that creates an instance of a class that inherits from GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">GeometricFigureFactory</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Returns the concrete class instance that inherits from GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;param name=&#8221;type&#8221;&gt;</span><span style="color:green;">The type of the concrete class to instantiate</span><span style="color:gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:#2b91af;">GeometricFigure</span> ReturnGeometricFigure(<span style="color:#2b91af;">GeometricFigureType</span> type)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigure</span> figure;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">switch</span> (type)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{ </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">case</span> <span style="color:#2b91af;">GeometricFigureType</span>.Circle:</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>figure = <span style="color:blue;">new</span> <span style="color:#2b91af;">Circle</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">default</span>:</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>figure = <span style="color:blue;">new</span> <span style="color:#2b91af;">Rectangle</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> figure;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Manager class that simplifies the abstract factory use. Can use all the classes that inherits from GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> using the Factory class.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">GeometricFigureManager</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">string</span> GetAreaFormula(<span style="color:#2b91af;">GeometricFigureType</span> Type)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigureFactory</span> factory = <span style="color:blue;">new</span> <span style="color:#2b91af;">GeometricFigureFactory</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:#2b91af;">GeometricFigure</span> figure = factory.ReturnGeometricFigure(Type);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> figure.AreaFormula();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> The classes that inherits from GeometricFigure</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">enum</span> <span style="color:#2b91af;">GeometricFigureType</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{ </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>Circle,</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>Rectangle</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;color:black;"><br />
</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=46&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2009/02/01/abstract-factory/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>
	</item>
		<item>
		<title>Cloning objects in .NET</title>
		<link>http://imduff.wordpress.com/2008/09/21/cloning-objects-in-net/</link>
		<comments>http://imduff.wordpress.com/2008/09/21/cloning-objects-in-net/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 03:21:23 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[Cloning objects]]></category>
		<category><![CDATA[MemberwiseClone]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=41</guid>
		<description><![CDATA[This is a very easy sample of how to clone an object. Some objects in the .NET Framework contains the Clone method. But what if I want to do this with my own class? Don’t worry, that’s very easy to implement. This is how to do it! using System; namespace CloningSample { /// &#60;summary&#62; /// [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=41&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">This is a very easy sample of how to clone an object. Some objects in the .NET Framework contains the Clone method. But what if I want to do this with my own class? Don’t worry, that’s very easy to implement. This is how to do it!</p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span style="color:blue;">using</span> </span><span style="font-size:10pt;font-family:&quot;">System;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span style="color:blue;">namespace</span> </span><span style="font-size:10pt;font-family:&quot;">CloningSample</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;">{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Person class sample</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Must implements the interface ICloneable found in System library.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> This interface contains the Clone() Method that will return the Copy of the object.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">class</span> <span style="color:teal;">Person</span> : <span style="color:teal;">ICloneable</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">string</span> Name;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">int</span> Age;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:teal;">DateTime</span> BirthDate;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">object</span> Clone()</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//The MemberwiseClone() method returns a shallow copy of the current instantiation </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> <span style="color:blue;">this</span>.MemberwiseClone();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">class</span> <span style="color:teal;">Program</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">static</span> <span style="color:blue;">void</span> </span><span style="font-size:10pt;font-family:&quot;">Main</span><span style="font-size:10pt;font-family:&quot;">(<span style="color:blue;">string</span>[] args)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Create the Person object</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Person</span> person = <span style="color:blue;">new</span> <span style="color:teal;">Person</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Create the copy of the Person object</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Person</span> personCopy = person.Clone() <span style="color:blue;">as</span> <span style="color:teal;">Person</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Verify they are different objects</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">if</span> (person.Equals(personCopy))</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span> </span><span style="color:teal;">Console</span>.WriteLine(<span style="color:maroon;">&#8220;Hey duff this is not working at all&#8230;&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.WriteLine(<span style="color:maroon;">&#8220;Cool, they are different Person objects&#8230;&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.Read();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;">}</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=41&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/09/21/cloning-objects-in-net/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>
	</item>
		<item>
		<title>Singleton sample with c#</title>
		<link>http://imduff.wordpress.com/2008/09/17/singleton-sample-with-c/</link>
		<comments>http://imduff.wordpress.com/2008/09/17/singleton-sample-with-c/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 13:17:06 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[design patter]]></category>
		<category><![CDATA[One instance object]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=34</guid>
		<description><![CDATA[Singleton is a design pattern used to restrict the instantiation of a class to one object. E.g. you may need a class that will contain the user information across the system, there is no need to create several instances of this class. The explanation of this will be given in this little sample, now have [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=34&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!--[if gte mso 9]&gt;  Normal 0       MicrosoftInternetExplorer4  &lt;![endif]--></p>
<p class="MsoNormal">Singleton is a design pattern used to restrict the instantiation of a class to one object. E.g. you may need a class that will contain the user information across the system, there is no need to create several instances of this class. The explanation of this will be given in this little sample, now have fun&#8230; :s</p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span style="color:blue;">using</span> </span><span style="font-size:10pt;font-family:&quot;">System;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span style="color:blue;">using</span> </span><span style="font-size:10pt;font-family:&quot;">System.Threading;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span style="color:blue;">namespace</span> </span><span style="font-size:10pt;font-family:&quot;">SingletonSample</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;">{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Main class</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">class</span> <span style="color:teal;">Program</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">static</span> <span style="color:blue;">void</span> Main(<span style="color:blue;">string</span>[] args)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Create the first instance of the object</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">CacheMemory</span> cache = <span style="color:teal;">CacheMemory</span>.Instance;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Trying to create a second instance of the object</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">CacheMemory</span> cache2 = <span style="color:teal;">CacheMemory</span>.Instance;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Show the time of creation of the object, both should have the same InstanceTime</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.WriteLine(cache.ToString());</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.WriteLine(cache2.ToString());</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//InstanceTime doesnt mean they are the same object, PROVE IT</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">if</span> (cache.Equals(cache2))</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.WriteLine(<span style="color:maroon;">&#8220;They are the same object, both have the same HashCode: &#8220;</span>);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.WriteLine(<span style="color:maroon;">&#8220;cache object hash: &#8220;</span> + cache.GetHashCode());</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.WriteLine(<span style="color:maroon;">&#8220;cache2 object hash: &#8220;</span> + cache2.GetHashCode());</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.WriteLine(<span style="color:maroon;">&#8220;You lied Duff, arent the same object :@&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:teal;">Console</span>.Read();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Set the class as sealed to avoid inheritance and the possibility to create several instances of the class</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">sealed</span> <span style="color:blue;">class</span> <span style="color:teal;">CacheMemory</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{ </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">static</span><span> </span><span style="color:teal;">CacheMemory</span> cache = <span style="color:blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Object used to lock the instance in a thread safe way.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">static</span> <span style="color:blue;">readonly</span> <span style="color:blue;">object</span> padlock = <span style="color:blue;">new</span> <span style="color:blue;">object</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">static</span> <span style="color:teal;">DateTime</span> InstanceTime;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Set the constructor as private. With this, the only way to create an instance of the class is using the Instance Property</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">private</span> CacheMemory() { }</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span> </span><span style="color:gray;">///</span><span style="color:green;"> Instance property in order to create the instance of the class.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">static</span> <span style="color:teal;">CacheMemory</span> Instance</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">get</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Lock the call to the Instance</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//With this, only one call will enter into the get avoiding multiple instances of the CacheMemory class</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">lock</span> (padlock)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//If the cache is null, then create a new Instance and set the Time of the creation of the object</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">if</span> (cache == <span style="color:blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>cache = <span style="color:blue;">new</span> <span style="color:teal;">CacheMemory</span>();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>InstanceTime = <span style="color:teal;">DateTime</span>.Now;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//If already the object was created, return the object.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> cache;</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Override the ToString method in order to show the creation time of the object.</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">string</span> ToString()</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> InstanceTime.ToString();</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:&quot;">}</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=34&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/09/17/singleton-sample-with-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>
	</item>
		<item>
		<title>Silverlight, lightning up the web</title>
		<link>http://imduff.wordpress.com/2008/07/18/silverlight-lightning-up-the-web/</link>
		<comments>http://imduff.wordpress.com/2008/07/18/silverlight-lightning-up-the-web/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 02:20:12 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Light up the web]]></category>
		<category><![CDATA[Web applications]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=29</guid>
		<description><![CDATA[First of all, this is not a Silverlight vs Flash post or a Silverlight vs any other web technology. I will stay focused on the benefits of Silverlight. I used to make web applications using PHP, ASP.NET, Flash and several other techonology. When WPF and Silverlight appeared where I work, I just said &#8220;We dont [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=29&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>First of all, this is not a Silverlight vs Flash post or a Silverlight vs any other web technology. I will stay focused on the benefits of Silverlight.</p>
<p>I used to make web applications using PHP, ASP.NET, Flash and several other techonology. When WPF and Silverlight appeared where I work, I just said &#8220;We dont need this, WinForms is ok, ASP.NET is ok if you include Ajax .NET and so many other technologies&#8221;. This is normal, when you already know  techonology you just dont want to move because you think that is going to be complicated, or because you dont know the advantages of a new techonology.</p>
<p>I started using WPF, and when I moved to Silverlight 2 Beta 1 I said &#8220;Oh my God why is this so difficult!&#8221;. I just did a chat web service using Windows Communication Foundation using Duplex Channels and Silverlight and now that I know how to take advantage of this&#8230; I can say I am very proud of and happy to join the new vision of Microsoft (and come on, I am not a  M$ fan but their technology is giving me something to eat lol), considering that here in Panama we are one of the first (if not the first) IT Outsourcing business using WPF and Silverlight.</p>
<p>I think they are going in the right direction and I believe Silverlight IS the future of the web. Flash is good, we all know that, PHP is good, Javascript is good&#8230; but for real and robust web applications I have no doubt that Silverlight will become the standard together with all the new Microsoft technologies. Silverlight is very scalable, so thats not a barrier to overcome for M$. Possibly not everybody have installed the Silverlight plugin right now, but thats is gonna change in the near future. From now on, I will stick to Silverlight&#8230; I love this new vision and if you dont know what is this new vision all about, I would like you to take a look to what is possible using Silverlight, thats is not just an &#8220;Animation Tool for the web&#8221;.</p>
<p>Silverlight really, really is the new web.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/29/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/29/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=29&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/07/18/silverlight-lightning-up-the-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>
	</item>
		<item>
		<title>Create dinamically Generic Types</title>
		<link>http://imduff.wordpress.com/2008/04/03/create-dinamically-generic-types/</link>
		<comments>http://imduff.wordpress.com/2008/04/03/create-dinamically-generic-types/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 19:15:36 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[C# Generic]]></category>
		<category><![CDATA[Create Dinamically Generics]]></category>
		<category><![CDATA[Generic Types]]></category>
		<category><![CDATA[MakeArrayType]]></category>
		<category><![CDATA[MakeGenericType]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=26</guid>
		<description><![CDATA[Sometimes you will need to create at runtime a generic type. For example, you just created a new User Control and you expect a collection to be used as DataContext. But this DataContext can be an Observable Collection of Employees or Manager objects. So, if you want to use it in your user control, you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=26&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Sometimes you will need to create at runtime a generic type. For example,  you just created a new User Control and you expect a collection to be used as DataContext. But this DataContext can be an Observable Collection of Employees or Manager objects. So, if you want to use it in your user control, you will need to get the type of the DataContext no matter the type of the content of the collection. </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Now.. try to do the following&#8230;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> newType = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>ObservableCollection</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)&gt;);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>You will get a compilation error, so basically you can&#8217;t create dinamically a Generic type in this way. </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>The Type class has a MakeGenericType method that you can use to do this at runtime. Check out this example:</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Collections.Generic;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Collections.ObjectModel;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Linq;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Text;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>namespace</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> DynamicGenericTypes</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Program</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>static</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Main(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] args)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#008000;"><span style="font-size:x-small;"><span>//Lets create at runtime an ObservableCollection and a SortedDictionary</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> runtimeObservable, runtimeSortedDic;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#008000;"><span style="font-size:x-small;"><span>//Arguments to create the ObservableCollection of integers</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> observable = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>ObservableCollection</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;&gt;);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] ocArgs = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Int32</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>) };</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#008000;"><span style="font-size:x-small;"><span>//Arguments to create the SortedDictionary with Guid as Key and String as Value</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> sortedDic = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>SortedDictionary</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;,&gt;);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] sdArgs = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Guid</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>), </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)};</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#008000;"><span style="font-size:x-small;"><span>//Get the collections generated at runtime using the CreateGenericType static method in the DuffsTypeCreator class</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"><span>runtimeObservable = </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>DuffsTypeCreator</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.CreateGenericType(observable, ocArgs);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"><span>runtimeSortedDic = </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>DuffsTypeCreator</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.CreateGenericType(sortedDic, sdArgs);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#008000;"><span style="font-size:x-small;"><span>/* Now lets do something to test if this works!</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#008000;"> <span style="font-size:x-small;">* Lets create an Observable Collection with 2 items and a SortedDictionary with 2 items </span></span></p>
<p style="margin-bottom:0;"><span style="color:#008000;"> <span style="font-size:x-small;">*/</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>ObservableCollection</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>int</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&gt; ocTest = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>ObservableCollection</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>int</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&gt;();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">ocTest.Add(100);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">ocTest.Add(150);</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>SortedDictionary</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Guid</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&gt; sdTest = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>SortedDictionary</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Guid</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&gt;();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"><span>sdTest.Add(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Guid</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.NewGuid(), </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Test1&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"><span>sdTest.Add(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Guid</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.NewGuid(), </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Test2&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#008000;"><span style="font-size:x-small;"><span>//Check if the collections types are equal to the Runtime-created types</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.Equals(ocTest.GetType(), runtimeObservable))</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.WriteLine(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;runtimeObservable is of type: &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + runtimeObservable.FullName);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.WriteLine();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.WriteLine(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.WriteLine();</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.Equals(sdTest.GetType() , runtimeSortedDic))</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.WriteLine(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;runtimeSortedDic is of type: &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + runtimeSortedDic.FullName);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.Read();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"><span style="color:#808080;">///</span><span style="color:#008000;"> </span><span style="color:#808080;">&lt;summary&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> Creates a new Genetic type</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;/summary&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;param name=&#8221;GenericType&#8221;&gt;</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span>The generic collection class to be used, e.g. ObservableCollection, List, 	SortedDictionary&#8230;</span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;/param&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;param name=&#8221;TemplateType&#8221;&gt;</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span>The template (s) that belongs to the generic collection, e.g. if the generic type is a 	List the array can contain an item with a String type that will basically means a List of strings</span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;/param&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;returns&gt;</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span>A runtime created Generic Type</span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;/returns&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>DuffsTypeCreator</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>internal</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>static</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> CreateGenericType(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GenericType, </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] TemplateType)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> runtimeGeneric = GenericType;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] args = TemplateType;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> generic = runtimeGeneric.MakeGenericType(args);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> generic;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>The Type class also contains a MakeArrayType and other interesting functions.</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Regards.</span></span></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/26/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/26/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=26&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/04/03/create-dinamically-generic-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>
	</item>
		<item>
		<title>Reflection with C#</title>
		<link>http://imduff.wordpress.com/2008/03/07/reflection-with-c/</link>
		<comments>http://imduff.wordpress.com/2008/03/07/reflection-with-c/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 21:34:53 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Reflection]]></category>
		<category><![CDATA[using reflection in .NET]]></category>
		<category><![CDATA[Using reflection in c#]]></category>
		<category><![CDATA[what is reflection]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=24</guid>
		<description><![CDATA[Reflection is the capability of inspect metadata from an assembly and get the information it contains. In the following example I created a class named Person, that contains: - 3 attributes: first name, last name and age - 2 Constructors, a no parameter constructor and another with 2 input strings for first and last name [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=24&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Reflection is the capability of inspect metadata from an assembly and get the information it contains. In the following example I created a class named Person, that contains:</p>
<p>- 3 attributes: first name, last name and age</p>
<p>- 2 Constructors, a no parameter constructor and another with 2 input strings for first and last name</p>
<p>- 2 Properties to set and get first and last name</p>
<p>- A method that sets the age</p>
<p>- A ToString() method that returns all the attributes in a sentence</p>
<p>What I do in the Main static method is create 2 Person objects using only Reflection. Sometime and somewhere you will need to get information from another class for sure or even create dinamically objects because you can&#8217;t do it in the design stage.</p>
<p>In the code I explain each step in order to use Reflection in c#&#8230;</p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Collections.Generic;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Linq;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Text;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Reflection;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>namespace</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Duff_Reflection</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Program</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>static</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Main(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] args)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//Lets define a Type for my class Person</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> personType = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Person</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//Create an instance using the Constructor that contains 2 String input parameters</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span><span>//The GetConstructor Method accepts an array of Types, indicating what Types will be used in the constructor to call, in this case 2 strings</span></span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span><span><span>//LOOK, in several cases this will be repeated throughout the whole sample (the array stuff indicating types or values), I&#8217;ll not repeat it.</span></span></span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>ConstructorInfo</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> info = personType.GetConstructor(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Type</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>), </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>typeof</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>) });</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>object</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> personCreated = info.Invoke(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>object</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] { </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Luis&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Del Vasto&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> });</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//Create an instance using the default Constructor (No parameters)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>object</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> personCreated2 = </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Activator</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.CreateInstance(personType);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//From now on, we have 2 Person objects, using both constructors</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//Lets asign to the first Person instance created the age</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>MethodInfo</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> assignAge = personType.GetMethod(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;setAge&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>assignAge.Invoke(personCreated, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>object</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] { 22 });</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//Lets asign to the second Person instance created the age</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>assignAge.Invoke(personCreated2, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>object</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>[] { 50 });</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//In the second object, the first and last name haven&#8217;t been set yet, lets do it</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//In order to set the values to the firstName and lastName attributes, I will use the</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//2 Properties declared in the same class, I&#8217;ll retrieve them and assign the values.</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>PropertyInfo</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> fname = personType.GetProperty(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;FirstName&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>PropertyInfo</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> lname = personType.GetProperty(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;LastName&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>fname.SetValue(personCreated2, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Ruben&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>null</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>lname.SetValue(personCreated2, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Gonzales&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>null</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//Print the info!</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.WriteLine(personCreated.ToString());</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.WriteLine(personCreated2.ToString());</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Console</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.Read();</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#008000;"><span style="font-size:x-small;"><span>//Custom class Person</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Person</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> firstName, lastName;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>int</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> age;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> FirstName</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>get</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> firstName; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>set</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { firstName = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>value</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> LastName</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>get</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> lastName; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>set</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { lastName = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>value</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Person()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{ }</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Person(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> fName, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> lName)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">firstName = fName;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">lastName = lName;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> setAge(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>int</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> param_age)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">age = param_age;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>override</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> ToString()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;My name is &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + firstName + </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + lastName + </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8221; and I&#8217;m &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + age;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">This must be the result of the Console sample:</p>
<p style="margin-bottom:0;"><a title="Reflection Console sample" href="http://imduff.files.wordpress.com/2008/03/reflection.jpg"><img src="http://imduff.files.wordpress.com/2008/03/reflection.jpg?w=500" alt="Reflection Console sample" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/24/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/24/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=24&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/03/07/reflection-with-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>

		<media:content url="http://imduff.files.wordpress.com/2008/03/reflection.jpg" medium="image">
			<media:title type="html">Reflection Console sample</media:title>
		</media:content>
	</item>
		<item>
		<title>Change highlight color when an Item in a ListView is selected</title>
		<link>http://imduff.wordpress.com/2008/03/01/change-highlight-color-when-an-item-in-a-listview-is-selected/</link>
		<comments>http://imduff.wordpress.com/2008/03/01/change-highlight-color-when-an-item-in-a-listview-is-selected/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 16:02:10 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=15</guid>
		<description><![CDATA[We all have noticed that when using a ListView, if you select a ListViewItem it gets a blue background as a default, and if you deselect the same ListViewItem the backgrund will change to gray. How can you change this “by default” backgrounds?. Using the System.Windows.SystemColors class located in the PresentationFramework.dll. This class contains the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=15&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom:0;">We all have noticed that when using a ListView, if you select a ListViewItem it gets a blue background as a default, and if you deselect the same ListViewItem the backgrund will change to gray. How can you change this “by default” backgrounds?. Using the System.Windows.SystemColors class located in the PresentationFramework.dll.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">This class contains the colors and brushes used in the system by default.</p>
<p style="margin-bottom:0;">Take a look to this example:</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">XAML:</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Class</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;WPFListViewHighlight.Window1&#8243;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#ff0000;"><span style="font-size:x-small;"><span>xmlns</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#ff0000;"><span style="font-size:x-small;"><span>xmlns</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;http://schemas.microsoft.com/winfx/2006/xaml&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Title</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;Window1&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;200&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;300&#8243;&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid.RowDefinitions</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>RowDefinition</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;5*&#8221; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>RowDefinition</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;*&#8221; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid.RowDefinitions</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Grid.Row</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;0&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Name</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;lvSample&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> ItemsSource</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>}&#8221; &gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView.View</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridView</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>AllowsColumnReorder</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;True&#8221;&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridViewColumn</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> DisplayMemberBinding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Path</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=FirstName}&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;100&#8243; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridViewColumn</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> DisplayMemberBinding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Path</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=LastName}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;100&#8243; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridViewColumn</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> DisplayMemberBinding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Path</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=ID}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;80&#8243; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridView</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView.View</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Button</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Grid.Row</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;1&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> HorizontalAlignment</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;Center&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;25&#8243;&gt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Select</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Button</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Code Behind:</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Collections.Generic;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Linq;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Text;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Controls;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Data;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Documents;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Input;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Media;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Media.Imaging;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Navigation;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>using</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> System.Windows.Shapes;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>namespace</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> WPFListViewHighlight</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;summary&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> Interaction logic for Window1.xaml</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#808080;"><span style="font-size:x-small;"><span>///</span></span></span><span style="color:#008000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#808080;"><span style="font-size:x-small;"><span>&lt;/summary&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>partial</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Window1</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> : </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Window</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>List</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&gt; list;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Window1()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">InitializeComponent();</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>list = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>List</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>&gt;();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> newEmployee1 = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Mike&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Wakamole&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;999-4563&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> newEmployee2 = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Luis&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Del Vasto&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;999-4563&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> newEmployee3 = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Loving&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;C#&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;000-5263&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> newEmployee4 = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Josue&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;Spartan&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>, </span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>&#8220;2222-463&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">list.Add(newEmployee1);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">list.Add(newEmployee2);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">list.Add(newEmployee3);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">list.Add(newEmployee4);</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">lvSample.DataContext = list;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#2b91af;"><span style="font-size:x-small;"><span>Employee</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>private</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> fname, lname, id;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Employee(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> f, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> l, </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> i) </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">fname = f;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">lname = l;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">id = i;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> FirstName </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>get</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> fname; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>set</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { fname = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>value</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> LastName</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>get</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> lname; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>set</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { lname = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>value</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>string</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> ID</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">{</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>get</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>return</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> id; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>set</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> { id = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>value</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>; }</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>}</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;"><span style="color:#000000;"><span>What I have in the XAML is a simple ListView using a Grid view and a button in the bottom. The ListView has a binding with a List of four employees defined with my Employee class. Now, if you select and deselect that selected item clicking the button you will see this:</span></span></span></p>
<p style="margin-bottom:0;"><a title="selected item by default" href="http://imduff.files.wordpress.com/2008/03/listviewnormalselected.jpg"><img src="http://imduff.files.wordpress.com/2008/03/listviewnormalselected.jpg?w=500" alt="selected item by default" /></a></p>
<p style="margin-bottom:0;"><a title="deselected item by default" href="http://imduff.files.wordpress.com/2008/03/listviewnormaldeselected.jpg"><img src="http://imduff.files.wordpress.com/2008/03/listviewnormaldeselected.jpg?w=500" alt="deselected item by default" /></a></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:small;"><span>Now lets play with the System.Windows.SystemColors class. In order to change this “by default” colors we need to know that the static property HighlightBrushKey is used to get the SolidColorBrush when a item was selected, and the static property ControlBrushKey </span></span></span><span style="color:#000000;"><span>paints the face of a three-dimensional display element, in this case we will use it to change the gray background color when the item was deselected. Lets add the following resource to the XAML:</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> TargetType</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;ListViewItem&#8221;&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>SolidColorBrush</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Key</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Static</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> SystemColors</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>.</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>HighlightBrushKey</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Color</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;Green&#8221;/&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>SolidColorBrush</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Key</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Static</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> SystemColors</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>.</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>ControlBrushKey</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Color</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;LightBlue&#8221;/&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;"><span style="color:#000000;"><span>With this resource, when an item is selected the background will be painted to green and when deselected the background will be painted to lightblue. Besides, you can take a look to the others static properties and do your application different.</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;"><span style="color:#000000;"><span>This is the XAML after this addition:</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Class</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;WPFListViewHighlight.Window1&#8243;</span></span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#ff0000;"><span style="font-size:x-small;"><span>xmlns</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#ff0000;"><span style="font-size:x-small;"><span>xmlns</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;http://schemas.microsoft.com/winfx/2006/xaml&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Title</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;Window1&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;200&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;300&#8243;&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> TargetType</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;ListViewItem&#8221;&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>SolidColorBrush</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Key</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Static</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> SystemColors</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>.</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>HighlightBrushKey</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Color</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;Green&#8221;/&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>SolidColorBrush</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Key</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>x</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>:</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Static</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> SystemColors</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>.</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>ControlBrushKey</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Color</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;LightBlue&#8221;/&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Style</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window.Resources</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid.RowDefinitions</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>RowDefinition</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;5*&#8221; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>RowDefinition</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;*&#8221; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid.RowDefinitions</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Grid.Row</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;0&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Name</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;lvSample&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> ItemsSource</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>}&#8221; &gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView.View</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridView</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>AllowsColumnReorder</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;True&#8221;&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridViewColumn</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> DisplayMemberBinding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Path</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=FirstName}&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span>Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;100&#8243; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridViewColumn</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> DisplayMemberBinding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Path</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=LastName}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;100&#8243; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridViewColumn</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> DisplayMemberBinding</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;{</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Binding</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Path</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=ID}&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Width</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;80&#8243; /&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>GridView</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView.View</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>ListView</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Button</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Grid.Row</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;1&#8243;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> HorizontalAlignment</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;Center&#8221;</span></span></span><span style="color:#ff0000;"><span style="font-size:x-small;"><span> Height</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>=&#8221;25&#8243;&gt;</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Select</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Button</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Grid</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&lt;/</span></span></span><span style="color:#a31515;"><span style="font-size:x-small;"><span>Window</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>&gt;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;"><span style="color:#000000;"><span>This is the result:</span></span></span></p>
<p style="margin-bottom:0;">Here is when selected&#8230;</p>
<p style="margin-bottom:0;"><a title="333.jpg" href="http://imduff.files.wordpress.com/2008/03/333.jpg"><img src="http://imduff.files.wordpress.com/2008/03/333.jpg?w=500" alt="333.jpg" /></a></p>
<p style="margin-bottom:0;">Here is when deselected&#8230;</p>
<p style="margin-bottom:0;"><a title="222.jpg" href="http://imduff.files.wordpress.com/2008/03/222.jpg"><img src="http://imduff.files.wordpress.com/2008/03/222.jpg?w=500" alt="222.jpg" /></a></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Regards&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=15&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/03/01/change-highlight-color-when-an-item-in-a-listview-is-selected/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>

		<media:content url="http://imduff.files.wordpress.com/2008/03/listviewnormalselected.jpg" medium="image">
			<media:title type="html">selected item by default</media:title>
		</media:content>

		<media:content url="http://imduff.files.wordpress.com/2008/03/listviewnormaldeselected.jpg" medium="image">
			<media:title type="html">deselected item by default</media:title>
		</media:content>

		<media:content url="http://imduff.files.wordpress.com/2008/03/333.jpg" medium="image">
			<media:title type="html">333.jpg</media:title>
		</media:content>

		<media:content url="http://imduff.files.wordpress.com/2008/03/222.jpg" medium="image">
			<media:title type="html">222.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Abstract class sample using VB.NET</title>
		<link>http://imduff.wordpress.com/2008/02/23/easy-abstract-class-sample-using-vbnet/</link>
		<comments>http://imduff.wordpress.com/2008/02/23/easy-abstract-class-sample-using-vbnet/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 15:58:20 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[OOP]]></category>
		<category><![CDATA[VB.NET]]></category>
		<category><![CDATA[Abstract Class]]></category>
		<category><![CDATA[MustInherit]]></category>
		<category><![CDATA[MustOverride]]></category>
		<category><![CDATA[Overrides]]></category>
		<category><![CDATA[Visual basic.NET]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=12</guid>
		<description><![CDATA[OOP looks so easy until you start Abstract classes and Interfaces, then OOP looks complex. Besides, get an easy explanation about this topics is almost unlikely (just take a look to the MSDN examples). I did an easy to understand sample using an abstract class named Employee, that is the base class for Manager and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=12&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>OOP looks so easy until you start Abstract classes and Interfaces, then OOP looks complex. Besides, get an easy explanation about this topics is almost unlikely (just take a look to the MSDN examples). I did an easy to understand sample using an abstract class named Employee, that is the base class for Manager and Agent. Remember, abstract classes can&#8217;t be instantiated, it can ONLY be used as base class for other classes.</p>
<p>Imagine that you have two types of employees in your department, a manager and agents. The salaries are calculated in different ways depending of the position and experience. But they also have several common attributes that you can apply in a class. Would be dumb, as an example, declare Age, First Name and the same attributes in both classes. Here is where abstract class apply.</p>
<p>Let&#8217;s do an abstract class for this example named Employee</p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>MustInherit</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Employee</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> FirstName </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> LastName </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> ID </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Age </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Int16</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Position </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> YearsOfExperience </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Int16</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Shared</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> HoursPerWeek </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Int16 = 48</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetPosition()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(FirstName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + LastName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; is a &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + Position)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetAge()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(FirstName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + LastName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; is &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + Age.ToString())</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>MustOverride</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetSalaryPerWeek()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">This abstract class have public attributes (first name, last name, id, position and years of experience) that will be common for managers and agents. Also it has a shared (static) member named hours per week, that contains the quantity of hours that the employees works weekly.</p>
<p style="margin-bottom:0;">A class is abstract only when it has at least one MustOverride (or virtual) member in the class. If not, the &#8220;abstract class&#8221; makes no sense at all. Now lets do a Manager class that inherits from Employee class. In this example our GetSalaryPerWeek must be override and all the implementation must be done in the classes that inherits from it. As I said before, the managers salary and agents salary are calculated in different ways and this is what we are going to implement in our derived classes Manager and Agent.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Manager</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Inherits</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Employee</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Overrides</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetSalaryPerWeek()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Dim</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> salary, bonus </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Double</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">salary = Employee.HoursPerWeek * 20.0</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">bonus = salary * YearsOfExperience / 100</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">salary += bonus</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(FirstName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + LastName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; salary is &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + salary.ToString())</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span></p>
<p style="margin-bottom:0;">Our Manager class only got one member, the GetSalaryPerWeek that overrides our <span style="color:#0000ff;"><span style="font-size:x-small;"><span>MustOverride</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>GetSalaryPerWeek() defined in our abstract class Employee. In this example, we multiply the hours per week by the salary per hour ($20.00 for the manager) and then we get a bonus depending on the experience of the employee. </span></span></span></p>
<p style="margin-bottom:0;">In our main method just define all the attributes of our classes Manager and Agent and call the methods. Remember, you can&#8217;t create an Employee object because abstract classes only can be used as base class for other classes. Our Manager and Employee classes inherits all the attributes and functions of our base class Employee.</p>
<p style="margin-bottom:0;">This is the code if you want to take a look:</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Module</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Abstract</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>MustInherit</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Employee</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> FirstName </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> LastName </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> ID </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Age </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Int16</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Position </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>String</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> YearsOfExperience </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Int16</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Shared</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> HoursPerWeek </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Int16 = 48</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetPosition()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(FirstName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + LastName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; is a &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + Position)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetAge()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(FirstName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + LastName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; is &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + Age.ToString())</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>MustOverride</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetSalaryPerWeek()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Manager</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Inherits</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Employee</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Overrides</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetSalaryPerWeek()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Dim</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> salary, bonus </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Double</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">salary = Employee.HoursPerWeek * 20.0</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">bonus = salary * YearsOfExperience / 100</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">salary += bonus</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(FirstName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + LastName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; salary is &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + salary.ToString())</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Agent</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Inherits</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Employee</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Overrides</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> GetSalaryPerWeek()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Dim</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> salary </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Double</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">salary = Employee.HoursPerWeek * 12.85</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(FirstName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + LastName + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8221; salary is &#8220;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> + salary.ToString())</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Class</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Main()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Dim</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> manager </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>New</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Manager()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Dim</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> agent </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>As</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>New</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Agent()</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>With</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> manager</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.FirstName = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;Nestor&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.LastName = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;Martinez&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.ID = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;1230-5897&#8243;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.Position = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;IQ Manager&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">.YearsOfExperience = 12</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.Age = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;26&#8243;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>With</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>With</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> agent</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.FirstName = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;Fernando&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.LastName = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;Romero&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.ID = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;1230-0000&#8243;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.Position = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;Sales agent&#8221;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>.Age = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;23&#8243;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>With</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">manager.GetPosition()</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">manager.GetAge()</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">manager.GetSalaryPerWeek()</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>Console.WriteLine(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">agent.GetPosition()</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">agent.GetAge()</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">agent.GetSalaryPerWeek()</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;">Console.ReadLine()</span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Sub</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>End</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>Module</span></span></span></p>
<p style="margin-bottom:0;">This should be the result of this code:</p>
<p style="margin-bottom:0;"><a title="Console" href="http://imduff.files.wordpress.com/2008/02/console1.jpg"><img src="http://imduff.files.wordpress.com/2008/02/console1.jpg?w=500" alt="Console" /></a></p>
<p style="margin-bottom:0;">
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=12&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/02/23/easy-abstract-class-sample-using-vbnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>

		<media:content url="http://imduff.files.wordpress.com/2008/02/console1.jpg" medium="image">
			<media:title type="html">Console</media:title>
		</media:content>
	</item>
		<item>
		<title>Applet &#8211; Calculator</title>
		<link>http://imduff.wordpress.com/2008/02/21/applet-calculator/</link>
		<comments>http://imduff.wordpress.com/2008/02/21/applet-calculator/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 20:26:53 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Applet]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Swing]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=8</guid>
		<description><![CDATA[During college, I did this Applet to learn how does this work. Some of the variables names are in Spanish. This is simple, the Calculator class inherist from JApplet, create a Container for it. Create a new instance of the CalculatorPanel that inherits from JPanel and insert this instance to the container object that we [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=8&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>During college, I did this Applet to learn how does this work. Some of the variables names are in Spanish.</p>
<p>This is simple, the Calculator class inherist from JApplet, create a Container for it. Create a new instance of the CalculatorPanel that inherits from JPanel and insert this instance to the container object that we created for the Calculator class. There are 2 internal classes inside CalculatorPanel, Numeros (Numbers in english) and Comandos (Commands in english). Numeros will be the handler of the event when a number has been clicked and Comandos will be in charged of the event when all others buttons are clicked ( +, -, etc);</p>
<p>Remember, Applets doesn&#8217;t have a main static function.</p>
<p>Here is the code:</p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>import</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> java.awt.*;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>import</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> javax.swing.*;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>import</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> java.awt.event.*;</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Calculator </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>extends</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> JApplet {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> init () {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>Container</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> contenedor = getContentPane();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> CalculatorPanel cp = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> CalculatorPanel();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> contenedor.add(cp);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> CalculatorPanel </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>extends</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> JPanel {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> JPanel  ptexto, pbotones;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> JButton botones;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> JTextField text;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>boolean</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> start,numinsertado;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> lastcomando;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>double</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> resultado ;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>ActionListener</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> listener = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Numeros();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>ActionListener</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> comando = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Comandos();</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> CalculatorPanel() {</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> setLayout(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>BorderLayout</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>());</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> start = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>true</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> numinsertado = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>true</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> lastcomando = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;=&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> resultado = 0.00;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> pbotones = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> JPanel();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> ptexto = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> JPanel();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> text = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> JTextField(20);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> text.setEditable(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>false</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>); </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> pbotones.setLayout(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>GridLayout</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(4,4,3,3));</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;0&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;1&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;2&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;3&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;4&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;5&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;6&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;7&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;8&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;9&#8243;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;.&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,listener);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;+&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,comando);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;-&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,comando);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;/&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,comando);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;*&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,comando);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;=&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,comando);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> ptexto.add(text);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> add(ptexto, </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>BorderLayout</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.NORTH);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> add(pbotones, </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>BorderLayout</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.CENTER);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> addButton(</span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> bot, </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>ActionListener</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> oyente) {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> botones = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>new</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> JButton(bot);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> botones.addActionListener(oyente);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> pbotones.add(botones);}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Numeros </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>implements</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>ActionListener</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> actionPerformed(</span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>ActionEvent</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> ev) {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> etiqueta = ev.getActionCommand();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (start) {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> text.setText(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> start=</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>false</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> <span style="font-size:x-small;"> text.setText(text.getText() + etiqueta);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> numinsertado = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>true</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }}</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>class</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> Comandos </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>implements</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>ActionListener</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>public</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> actionPerformed (</span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>ActionEvent</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> exe) {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>try</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>{</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> eti = exe.getActionCommand();</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (numinsertado){</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>double</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> numero = </span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>Double</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>.parseDouble(text.getText());</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> calculo (lastcomando,numero);</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> numinsertado = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>false</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> start = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>true</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> lastcomando = eti;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (lastcomando.equals(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;=&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>))</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> text.setText(resultado + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);}</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>catch</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>(</span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>Exception</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> ex) { </span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> JOptionPane.showMessageDialog(</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>null</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;Program can&#8217;t continue&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;ERROR&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>,JOptionPane.ERROR_MESSAGE);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> text.setText(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> start = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>true</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> numinsertado = </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>true</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> lastcomando = </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;=&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> resultado = 0.00;</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }}</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#000000;"> </span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>void</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> calculo(</span></span></span><span style="color:#008080;"><span style="font-size:x-small;"><span>String</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> bt,</span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>double</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> num1) {</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (bt.equals(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;+&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)) resultado +=num1;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>else</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (bt.equals(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;-&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)) resultado -=num1;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>else</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (bt.equals(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;*&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)) resultado *=num1;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>else</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (bt.equals(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;/&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)) resultado /=num1;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>else</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> </span></span></span><span style="color:#0000ff;"><span style="font-size:x-small;"><span>if</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span> (bt.equals(</span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;=&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>)) resultado = num1;</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span> text.setText(resultado + </span></span></span><span style="color:#800000;"><span style="font-size:x-small;"><span>&#8220;&#8221;</span></span></span><span style="color:#000000;"><span style="font-size:x-small;"><span>);</span></span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;"><span style="color:#000000;"><span style="font-size:x-small;"><span>}</span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Now, when you compile this code, 4 classes will be created. You need to embed this code to an HTML document.</p>
<p style="margin-bottom:0;">When I was at college the applet tag wasn&#8217;t deprecated, it&#8217;s now. But this will work out:</p>
<p style="margin-bottom:0;">&lt;<span style="color:#ff0000;">applet </span>code = &#8220;Calculator.class&#8221; width =&#8221;270&#8243; height =&#8221;270&#8243;&gt;<br />
&lt;<span style="color:#ff0000;">/applet</span>&gt;</p>
<p style="margin-bottom:0;">Just to let you know, the object tag should be used when trying to add java applets to html.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=8&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/02/21/applet-calculator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>
	</item>
		<item>
		<title>CSS IE Hack</title>
		<link>http://imduff.wordpress.com/2008/02/21/css-ie-hack/</link>
		<comments>http://imduff.wordpress.com/2008/02/21/css-ie-hack/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 16:55:59 +0000</pubDate>
		<dc:creator>imduff</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Web standar]]></category>
		<category><![CDATA[Web Styling]]></category>

		<guid isPermaLink="false">http://imduff.wordpress.com/?p=4</guid>
		<description><![CDATA[When creating a web page layout using CSS for the first time and then you try different navigators you realize that your web page looks different, specially using Internet Explorer. The box model in IE is very different from FireFox and other navigators and the result is&#8230; more job. Because of this, some designers are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=4&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom:0;">When creating a web page layout using CSS for the first time and then you try different navigators you realize that your web page looks different, specially using Internet Explorer. The box model in IE is very different from FireFox and other navigators and the result is&#8230; more job. Because of this, some designers are still using tables to do their web page&#8217;s layout. Here is where something called IE Hack can be very useful. For example, you define this class in your CSS document:</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">#<span style="color:#ff0000;">footer </span></p>
<p style="margin-bottom:0;">{</p>
<p style="margin-bottom:0;"><span style="color:#ff0000;">font-family</span>:Arial;</p>
<p style="margin-bottom:0;"><span style="color:#ff0000;">font-size</span>:12px;</p>
<p style="margin-bottom:0;"><span style="color:#ff0000;">color</span>:Gray;</p>
<p style="margin-bottom:0;"><span style="color:#ff0000;">clear</span>:both;</p>
<p style="margin-bottom:0;"><span style="color:#ff0000;">width</span>:100%;</p>
<p style="margin-bottom:0;"><span style="color:#ff0000;">text-align</span>:center;</p>
<p style="margin-bottom:0;"><span style="color:#ff0000;">margin-top</span>:32px;</p>
<p style="margin-bottom:0;">}</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">The you add in the head tag of your HTML document the reference to the CSS document:</p>
<p style="margin-bottom:0;">&lt;<span style="color:#ff0000;">head</span>&gt;</p>
<p style="margin-bottom:0;">&lt;<span style="color:#ff0000;">link</span> <span style="color:#ff0000;">href</span>=&#8221;CSS/sd.css&#8221; <span style="color:#ff0000;">rel</span>=&#8221;stylesheet&#8221;<span style="color:#ff0000;"> type</span>=&#8221;text/css&#8221; /&gt;</p>
<p style="margin-bottom:0;">&lt;<span style="color:#ff0000;">/</span><span style="color:#ff0000;">head</span>&gt;</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">This will be the footer of your web page. It looks good in Fire Fox, but when using IE it&#8217;s not, is too separated from the content.</p>
<p style="margin-bottom:0;">What can we do is apply the Internet Explorer hack using the next condition in the head tag as well:</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;!&#8211;[if IE 7]&gt;</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;STYLE&gt; </span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">#footer {</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">margin-top:26px; }</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;/STYLE&gt;</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;![endif]&#8211;&gt;</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">So, the head will be:</p>
<p style="margin-bottom:0;">&lt;<span style="color:#ff0000;">head</span>&gt;</p>
<p style="margin-bottom:0;">&lt;<span style="color:#ff0000;">link</span> <span style="color:#ff0000;">href</span>=&#8221;CSS/sd.css&#8221; <span style="color:#ff0000;">rel</span>=&#8221;stylesheet&#8221; <span style="color:#ff0000;">type</span>=&#8221;text/css&#8221; /&gt;</p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;!&#8211;[if IE 7]&gt;</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;STYLE&gt; </span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">#footer </span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">{</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">margin-top:26px; </span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">}</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;/STYLE&gt;</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;![endif]&#8211;&gt;</span></p>
<p style="margin-bottom:0;">&lt;/head&gt;</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">How does this work? The HTML document will use the CSS file to model the web page using the #footer class, but the condition [if IE 7] will overwrite the margin-top:32px used in the CSS with the new margin applied in the IE Hack margin-top:26px.</p>
<p style="margin-bottom:0;">Also you can apply new styles inside the IE, so not necessarily you will always been overwriting what you have in your CSS.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Now, you open you web page in an Internet Explorer 6.0 and Internet Explorer 5.0 versions and it looks bad. You don&#8217;t need to create conditionals for each one of them. You can apply this:</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;!&#8211;[if lte IE 7]&gt;</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;STYLE&gt;</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">margin-top:22px; </span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;/STYLE&gt;</span></p>
<p style="margin-bottom:0;"><span style="color:#339966;">&lt;![endif]&#8211;&gt;</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">This condition means “If IE is older than 7.0 then apply this”, applying the margin top to 22 pixels.</p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">Also you can apply for earlier versions in this way:</p>
<p style="margin-bottom:0;">
<p style="border:medium none;padding:0;" align="left"><span style="color:#339966;">[if gt IE 6]</span></p>
<p style="border:medium none;padding:0;" align="left">
<p style="border:medium none;padding:0;" align="left">This will apply for IE 7.0 and newer versions.</p>
<p style="border:medium none;padding:0;" align="left">
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/imduff.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/imduff.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imduff.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imduff.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imduff.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imduff.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imduff.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imduff.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imduff.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imduff.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imduff.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imduff.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imduff.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imduff.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imduff.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imduff.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imduff.wordpress.com&amp;blog=2935356&amp;post=4&amp;subd=imduff&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imduff.wordpress.com/2008/02/21/css-ie-hack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50120421d0fe81c60a2fee968ad46e4c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">imduff</media:title>
		</media:content>
	</item>
	</channel>
</rss>
