<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6576989672957961799</id><updated>2011-04-21T22:11:22.425-06:00</updated><category term='MCML'/><category term='Visual Studio'/><category term='Development'/><category term='Windows Vista'/><category term='Microsoft'/><category term='VS2005'/><category term='Media Center'/><category term='Popfly'/><category term='Silverlight'/><title type='text'>Marvin Varela's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marvinvarela.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marvinvarela.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marvin Varela</name><uri>http://www.blogger.com/profile/14244106475716199419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6576989672957961799.post-1651065618541342985</id><published>2007-08-27T16:44:00.000-06:00</published><updated>2007-08-27T16:47:03.187-06:00</updated><title type='text'>Multi-value Flag Pattern (a.k.a. specialized enumerations)</title><content type='html'>&lt;style&gt;&lt;br /&gt;&lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face  {font-family:Tahoma;  panose-1:2 11 6 4 3 5 4 4 2 4;} @font-face  {font-family:"Segoe UI";  panose-1:2 11 5 2 4 2 4 2 2 3;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  font-size:11.0pt;  font-family:"Calibri","sans-serif";} h1  {margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  font-size:15.0pt;  font-family:"Calibri","sans-serif";  color:#17365D;  font-weight:bold;} h2  {margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  font-size:13.0pt;  font-family:"Calibri","sans-serif";  color:#17365D;  font-weight:bold;} h3  {margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  color:#17365D;  font-weight:bold;} h4  {margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  color:#17365D;  font-weight:normal;} h5  {margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  color:#17365D;  font-weight:normal;  font-style:italic;} h6  {margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  font-size:10.0pt;  font-family:"Calibri","sans-serif";  color:#17365D;  font-weight:bold;} a:link, span.MsoHyperlink  {color:blue;  text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed  {color:purple;  text-decoration:underline;} p  {margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  font-size:11.0pt;  font-family:"Calibri","sans-serif";} p.MsoAcetate, li.MsoAcetate, div.MsoAcetate  {mso-style-link:"Balloon Text Char";  margin:0in;  margin-bottom:.0001pt;  font-size:8.0pt;  font-family:"Tahoma","sans-serif";} span.MsoPlaceholderText  {color:gray;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph  {margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:.5in;  font-size:11.0pt;  font-family:"Calibri","sans-serif";} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst  {margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  font-size:11.0pt;  font-family:"Calibri","sans-serif";} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle  {margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  font-size:11.0pt;  font-family:"Calibri","sans-serif";} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast  {margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:.5in;  font-size:11.0pt;  font-family:"Calibri","sans-serif";} p.MsoQuote, li.MsoQuote, div.MsoQuote  {margin-top:0in;  margin-right:.5in;  margin-bottom:10.0pt;  margin-left:.5in;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  color:black;} p.Publishwithline, li.Publishwithline, div.Publishwithline  {mso-style-name:"Publish with line";  margin:0in;  margin-bottom:.0001pt;  font-size:16.0pt;  font-family:"Calibri","sans-serif";  color:#17365D;  font-weight:bold;} p.PublishStatus, li.PublishStatus, div.PublishStatus  {mso-style-name:"Publish Status";  margin-top:6.0pt;  margin-right:0in;  margin-bottom:2.0pt;  margin-left:0in;  background:#FDEB9F;  border:none;  padding:0in;  font-size:9.0pt;  font-family:"Calibri","sans-serif";} p.PublishStatusAccessible, li.PublishStatusAccessible, div.PublishStatusAccessible  {mso-style-name:PublishStatus_Accessible;  margin-top:6.0pt;  margin-right:0in;  margin-bottom:2.0pt;  margin-left:0in;  border:none;  padding:0in;  font-size:9.0pt;  font-family:"Calibri","sans-serif";} p.Account, li.Account, div.Account  {mso-style-name:Account;  margin:0in;  margin-bottom:.0001pt;  font-size:9.0pt;  font-family:"Segoe UI","sans-serif";  color:#4F81BD;} p.Categories, li.Categories, div.Categories  {mso-style-name:Categories;  margin:0in;  margin-bottom:.0001pt;  font-size:9.0pt;  font-family:"Segoe UI","sans-serif";  color:#4F81BD;} p.PadderBetweenTitleandProperties, li.PadderBetweenTitleandProperties, div.PadderBetweenTitleandProperties  {mso-style-name:"Padder Between Title and Properties";  margin-top:0in;  margin-right:0in;  margin-bottom:1.0pt;  margin-left:0in;  font-size:1.0pt;  font-family:"Calibri","sans-serif";} p.PadderBetweenControlandBody, li.PadderBetweenControlandBody, div.PadderBetweenControlandBody  {mso-style-name:"Padder Between Control and Body";  margin-top:0in;  margin-right:0in;  margin-bottom:6.0pt;  margin-left:0in;  font-size:1.0pt;  font-family:"Calibri","sans-serif";} p.underline, li.underline, div.underline  {mso-style-name:underline;  margin-top:2.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  border:none;  padding:0in;  font-size:1.0pt;  font-family:"Calibri","sans-serif";} span.BalloonTextChar  {mso-style-name:"Balloon Text Char";  mso-style-link:"Balloon Text";  font-family:"Tahoma","sans-serif";} @page Section1  {size:995.4pt 18.0in;  margin:0in 6.0pt 0in 6.0pt;} div.Section1  {page:Section1;}  /* List Definitions */  ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt;&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="Section1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="Publishwithline"&gt;&lt;span style="color:windowtext;"&gt;Multi-value Flag&lt;br /&gt;Pattern (a.k.a. specialized enumerations)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 2pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="underline"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="PadderBetweenControlandBody"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;In software development, a flag is a mark placed on an&lt;br /&gt;object instance or data record in order to signal a particular status or&lt;br /&gt;condition or to keep a record on whether a particular event has occurred&lt;br /&gt;concerning the specified data. Mostly flags are binary, meaning they represent&lt;br /&gt;a Boolean value; they are either true or false. We see many binary flags&lt;br /&gt;represented as Boolean typed properties or bit typed data fields and they&lt;br /&gt;include cases like marking an object as “Active”, “Obsolete”, “Recorded”, among&lt;br /&gt;others. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Sometimes it is necessary for a flag to be able to get more&lt;br /&gt;than the two binary values “true” and “false”. In these cases, enumerations&lt;br /&gt;come handy as they provide a very simple way to declare, use and store several&lt;br /&gt;values without having to deal with error prone value types while at the same&lt;br /&gt;time being able to store easy to convert values in the data repository. So by&lt;br /&gt;using enumerations you can relate “Inserted” with 0, “Reviewed” with 1,&lt;br /&gt;“Approved” with 2, “Published” with 3, and finally “Edited” with 4. With this&lt;br /&gt;relationships you are able to flag your object as “inserted” in the system,&lt;br /&gt;later after someone has gone through the contents making sure everything is OK&lt;br /&gt;you can change its value to “Reviewed”; after the revision is done content&lt;br /&gt;needs to be “approved” by a third actor and finally all approved contents are&lt;br /&gt;“published” to the UI. Days later the content is “edited” again and it needs to&lt;br /&gt;go through the process again.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;There are however, very specific cases when representing&lt;br /&gt;flag values with integers do not meet the requirements, as maybe you need the&lt;br /&gt;raw data returned by a query to the database to be understood at first sight or&lt;br /&gt;to be provided or used by third parties while at the same time you have to&lt;br /&gt;consider storage limitations and using lengthy flag values might be&lt;br /&gt;unreasonable. The easier way to solve this problem would be to use a single&lt;br /&gt;character for the flag values, as they are easy to remember and take only a&lt;br /&gt;byte for each record. Using this technique we can represent the values&lt;br /&gt;mentioned before by storing “I” for “Inserted”, “R” for “Reviewed”, “A” for&lt;br /&gt;“Approved”, “P” for “Published” and “E” for “Edited”. But as we cannot assign&lt;br /&gt;String values to enumerations we lose the convenience of strong-typing and&lt;br /&gt;might get trapped in error prone practices like leaving the value that is&lt;br /&gt;stored open to the developers, who might unknowingly type wrong values in&lt;br /&gt;certain portions of code. In order to be able to use this kind of values in the&lt;br /&gt;data repository we need to create a way to solve the following problems:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoListParagraphCxSpFirst" style="TEXT-INDENT: -0.25in"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Being&lt;br /&gt;able to use strong typed values during development.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="TEXT-INDENT: -0.25in"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Being&lt;br /&gt;able to avoid hard-to-maintain conversion techniques between strong typed&lt;br /&gt;values and value types.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="TEXT-INDENT: -0.25in"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Being&lt;br /&gt;able to still pass value types to the Data Abstraction Layer without having to&lt;br /&gt;resort to case-by-case conversion techniques.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="TEXT-INDENT: -0.25in"&gt;4.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Ensuring&lt;br /&gt;developers won’t be able to mistakenly pass inexistent values to the flag.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoListParagraphCxSpLast" style="TEXT-INDENT: -0.25in"&gt;5.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Begin&lt;br /&gt;able to store non-numeric values in the database.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;In order to achieve this behavior we need to “emulate” the&lt;br /&gt;behavior of an enumeration, making sure we can associate non-numeric values to&lt;br /&gt;the flag.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Let’s start by declaring the type we will use for our&lt;br /&gt;specialized enumeration:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;sealed&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#region&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt; Properties&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Value that will be represent this status in the data&lt;br /&gt;repository.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; StoringValue {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; storingValue; }&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; storingValue;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Value that will represent this status in the UI.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; DisplayValue {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; displayValue; }&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; displayValue;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#endregion&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#region&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt; Constructor&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Initializes a new instance of the ProductStatus flag.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&lt;br /&gt;name="storingValue"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Value that&lt;br /&gt;will represent this status in the data repository.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&lt;br /&gt;name="displayValue"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Value that&lt;br /&gt;will represent this status in the UI.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; The constructor of the class is marked as private in order&lt;br /&gt;to prevent external users from&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; being able to create new instances of the ProductStatus.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; The multi-value flag pattern represents an extension of&lt;br /&gt;the singleton pattern in which&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; instead of just one, a limited series of instances of the&lt;br /&gt;class are allowed to exist.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&lt;br /&gt;ProductStatus(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; storingValue, &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; displayValue) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.storingValue&lt;br /&gt;= storingValue;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.displayValue&lt;br /&gt;= displayValue;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#endregion&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;The class is marked as “sealed” as the first barrier for preventing&lt;br /&gt;developers from being able to assign incorrect values to the flag. If it is&lt;br /&gt;possible to inherit from our class it would be possible to generate more&lt;br /&gt;instances of the ProductStatus type leading to an incorrect assignment. The&lt;br /&gt;class also declares a unique private constructor and two properties. The properties&lt;br /&gt;will store the values that will be used to represent the status in the data&lt;br /&gt;repository and the user interface. The constructor is marked as private in&lt;br /&gt;order to control how many instances of the class are created at any given time.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Now that we have the reference type that will represent our&lt;br /&gt;flag, we need to create its instances. In order to do that we will add the&lt;br /&gt;following static properties to the class:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#region&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt; Static Properties&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Represents the pending status of a product.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; Pending = &lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;"P"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color:#a31515;"&gt;"Pending"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Represents the approved status of a product.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; Approved = &lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;"A"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color:#a31515;"&gt;"Approved"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Represents the published status of a product.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; Published = &lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;"B"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color:#a31515;"&gt;"Published"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#endregion&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Now we can easily reference each instance the same way we do&lt;br /&gt;with enumerations, using the “Type.Instance” formula:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;product.Status = &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.Approved;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;In order to make sure the properties declared with this type&lt;br /&gt;on the business object are going to be compatible with the model we’re using&lt;br /&gt;where the BAL and the DAL are loosely-coupled, it is necessary to ensure our&lt;br /&gt;instance will implicitly be converted to String, just like enumerations are&lt;br /&gt;seamlessly converted to Int32 values. We achieve this by declaring implicit&lt;br /&gt;operators on the class:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#region&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt; Operators&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Implicitly converts the status value into the storing type&lt;br /&gt;in order to&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; achieve transparent communication between loosely coupled&lt;br /&gt;layers.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&lt;br /&gt;name="value"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Status value to be&lt;br /&gt;converted.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Resulting status value.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;implicit&lt;/span&gt; &lt;span style="color:blue;"&gt;operator&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; value) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&lt;br /&gt;value.StoringValue;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Implicitly converts storing type (String) values into&lt;br /&gt;(allowed) product&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; status values so that they can be retrieved from the&lt;br /&gt;database without&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; the need for explicit conversion. This eliminates the need&lt;br /&gt;for the data&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; abstraction layer to know about the status pattern&lt;br /&gt;implementation.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&lt;br /&gt;name="value"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;String value to&lt;br /&gt;convert.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The status value that corresponds to this string.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;implicit&lt;/span&gt; &lt;span style="color:blue;"&gt;operator&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; value) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.GetProductStatus(value);&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;#endregion&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;color:blue;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;The implicit operator uses the following methods to obtain&lt;br /&gt;its value:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Gets the collection of allowed values of this class.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;&amp;gt; GetAllowedValues() {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;yield&lt;/span&gt; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.Pending;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;yield&lt;/span&gt; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.Approved;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;yield&lt;/span&gt; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.Published;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Searches inside the list of allowed values for one where &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; the storing value equals the proportioned string. If the&lt;br /&gt;value&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; is not found null is returned.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&lt;br /&gt;name="value"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;String to look for&lt;br /&gt;in the list of allowed values.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The ProductStatus value corresponding to the specified&lt;br /&gt;string or null if the value is not found.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;&lt;br /&gt;GetProductStatus(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; storingValue) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&lt;br /&gt;(&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; status &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.GetAllowedValues())&lt;br /&gt;{&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;br /&gt;(status.StoringValue == storingValue) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&lt;br /&gt;status;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Finally in order to complete the implementation we add&lt;br /&gt;utility methods and override the ToString() method of the Object class to make&lt;br /&gt;sure the correct values are printed on the UI without having to invest any additional&lt;br /&gt;code in the presentation layer:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Gets the storing value that corresponds to the specified&lt;br /&gt;display value.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&lt;br /&gt;name="value"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Display value to&lt;br /&gt;find.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;A string that represents the storing value corresponding to&lt;br /&gt;the specified display value or null.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;&lt;br /&gt;GetStoringValue(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; displayValue) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&lt;br /&gt;(&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; status &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.GetAllowedValues())&lt;br /&gt;{&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;br /&gt;(status.DisplayValue == displayValue) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&lt;br /&gt;status.StoringValue; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Gets the display value that corresponds to the specified&lt;br /&gt;storing value.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&lt;br /&gt;name="value"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Storing value to&lt;br /&gt;find.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;A string that represents the display value corresponding to&lt;br /&gt;the specified storing value or null.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;&lt;br /&gt;GetDisplayValue(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; storingValue) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&lt;br /&gt;(&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; status &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.GetAllowedValues())&lt;br /&gt;{&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;br /&gt;(status.StoringValue == storingValue) {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&lt;br /&gt;status.DisplayValue;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; Returns the UI-compatible representation of the status.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt;&lt;br /&gt;ToString() {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.DisplayValue;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;If in the future it is necessary to add new status values to&lt;br /&gt;the class it would be necessary to add two lines of code to the implementation:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt; NewStatus = &lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;"N"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color:#a31515;"&gt;"NewStatus"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Declaring the static property.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdf7c7; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;&amp;gt; GetAllowedValues() {&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;yield&lt;/span&gt; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.Pending;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;yield&lt;/span&gt; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.Approved;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;yield&lt;/span&gt; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.Published;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;span style="color:blue;"&gt;yield&lt;/span&gt; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ProductStatus&lt;/span&gt;.NewStatus;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #fdf7c7; MARGIN-BOTTOM: 0pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Adding the additional return value to the GetAllowedValues()&lt;br /&gt;method.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;You can download the complete implementation and a very&lt;br /&gt;simple use case in a WinForms UI &lt;a href="http://www.murven.com/documents/articles/MultiValueFlagPattern.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6576989672957961799-1651065618541342985?l=marvinvarela.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marvinvarela.blogspot.com/feeds/1651065618541342985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6576989672957961799&amp;postID=1651065618541342985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/1651065618541342985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/1651065618541342985'/><link rel='alternate' type='text/html' href='http://marvinvarela.blogspot.com/2007/08/multi-value-flag-pattern-aka.html' title='Multi-value Flag Pattern (a.k.a. specialized enumerations)'/><author><name>Marvin Varela</name><uri>http://www.blogger.com/profile/14244106475716199419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6576989672957961799.post-2570716846806283628</id><published>2007-07-16T11:44:00.000-06:00</published><updated>2007-07-16T12:12:22.051-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Silverlight 1.0: Preparing for the release candidate</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Tim Sneath has announced on &lt;a href="http://blogs.msdn.com/tims/default.aspx"&gt;his blog&lt;/a&gt; that the first release candidate for Silverlight 1.0 will be made public in a couple of weeks. It is important for people with current and upcoming developments using Silverlight to prepare for this release as two very important things will happen:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Some of the changes on this release will break previous Silverlight applications&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;From this release and on and until the final release of the product no more breaking changes will be introduced.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;So if you and your team have projects in Silverlight and you want to keep them up to date and running on this release you should be preparing for the breaking changes, as listed in Joe Stegman's &lt;a href="http://blogs.msdn.com/jstegman/archive/2007/06/06/more-v-1-0-changes.aspx"&gt;recent blog entry&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;At this point you can prepare by downloading a specific SDK for this version that will also include a document listing these changes and will teach you how to detect whether the application is running on the beta or RC version of the plug-in in order to make it compatible with both of them.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;&lt;a href="http://folders.live.com/self.aspx/kocj18oD+kQ/Silverlight/Silverlight%201.0%20SDK%20RC%20Preview.zip"&gt;You can download this "Preview SDK" here.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;Note: this file does not contain the release candidate, instead it contains the necessary information for you to start preparing for this release.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;Currently there is no official date for another release of Silverlight 1.1. The Alpha version released in May is the most recent one and the Silverlight team has currently no plan for releasing a new version in the immediate future, despite a strong preference in the community about the 1.1's .NET version of Silverlight compared to 1.0's JavaScript support.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6576989672957961799-2570716846806283628?l=marvinvarela.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marvinvarela.blogspot.com/feeds/2570716846806283628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6576989672957961799&amp;postID=2570716846806283628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/2570716846806283628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/2570716846806283628'/><link rel='alternate' type='text/html' href='http://marvinvarela.blogspot.com/2007/07/silverlight-10-preparing-for-release.html' title='Silverlight 1.0: Preparing for the release candidate'/><author><name>Marvin Varela</name><uri>http://www.blogger.com/profile/14244106475716199419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6576989672957961799.post-333551671508370806</id><published>2007-07-12T12:36:00.000-06:00</published><updated>2007-07-16T12:30:49.933-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Popfly'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Images from LiveSpace into PhotoSphere</title><content type='html'>&lt;iframe style="width:100%; height:500px;" frameborder="yes" src="http://www.popfly.ms/users/Murven/Images from Live Space into PhotoSphere.small"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I signed up for Microsoft's Popfly sometime ago, but haven't really had time to get deeper into it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;Today I started playing with it and created my first "mashup": Images from LiveSpace into PhotoSphere.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;A mashup is basically a combination of plug-ins that interact between them using a certain protocol. Some plug-in server data, others use this data and present it in a certain way.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;For this specific mashup I'm using a plug-in that will output image links from my LiveSpace account. Those links will serve as input for another plug-in that will present the images in a SilverLight interface with a really cool rotating effect around a 3D Sphere.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;You can see the result above these blog entry.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;Note: You'll need the SilverLight plug-in and it takes some time to download all the images before you see anything.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6576989672957961799-333551671508370806?l=marvinvarela.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marvinvarela.blogspot.com/feeds/333551671508370806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6576989672957961799&amp;postID=333551671508370806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/333551671508370806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/333551671508370806'/><link rel='alternate' type='text/html' href='http://marvinvarela.blogspot.com/2007/07/images-from-livespace-into-photosphere.html' title='Images from LiveSpace into PhotoSphere'/><author><name>Marvin Varela</name><uri>http://www.blogger.com/profile/14244106475716199419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6576989672957961799.post-3528233925765034894</id><published>2007-05-12T14:09:00.000-06:00</published><updated>2007-05-13T12:09:12.969-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Media Center'/><category scheme='http://www.blogger.com/atom/ns#' term='MCML'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Using C# 3.0's Extension Methods to generate MCML from Reference types</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;Other versions of the article:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.murven.com/documents/articles/ExtMetGenMCML.htm"&gt;HTM Version&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.murven.com/documents/articles/ExtMetGenMCML.zip"&gt;XPS Version&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;C# 3.0 features &lt;i style="mso-bidi-font-style: normal"&gt;Extension Methods&lt;/i&gt;, static methods which will let you extend the functionality of&lt;br /&gt;existing types, without having to sub-class the type or modifying the original source code. This article discusses how to use this feature to generate Media Center Markup Language (MCML) in a re-usable and extensible way.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;The basics: Value Types&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Let’s start by creating a very basic extension method:&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #339966 1.5pt double; PADDING-RIGHT: 4pt; BORDER-TOP: #339966 1.5pt double; PADDING-LEFT: 4pt; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 1pt; BORDER-LEFT: #339966 1.5pt double; PADDING-TOP: 1pt; BORDER-BOTTOM: #339966 1.5pt double; mso-element: para-border-div"&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';font-size:85%;"  &gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; ToMcml(&lt;span style="color:blue;"&gt;this&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; target, &lt;span style="color:blue;"&gt;string&lt;/span&gt; name) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#a31515;"&gt;"&amp;lt;cor:String Name=\"{0}\" String=\"{1}\"/&amp;gt;"&lt;/span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;name, &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;target);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Notice the keyword “this” in front of type “string” which let’s the compiler know which type is going to be extended by this method. In this case adding a reference to the namespace where this method is implemented will add the “&lt;span class="SpellE"&gt;ToMcml&lt;/span&gt;” method to any instance of type string.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;This lets the developer generate the MCML markup for any string in the following forms:&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #339966 1.5pt double; PADDING-RIGHT: 4pt; BORDER-TOP: #339966 1.5pt double; PADDING-LEFT: 4pt; BACKGROUND: #f8f7e3; PADDING-BOTTOM: 1pt; BORDER-LEFT: #339966 1.5pt double; PADDING-TOP: 1pt; BORDER-BOTTOM: #339966 1.5pt double; mso-element: para-border-div"&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f7e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; mcmlText = &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Empty;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f7e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(mcmlText.ToMcml(&lt;span style="color:#a31515;"&gt;"McmlProperty"&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f7e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f7e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#a31515;"&gt;"String&lt;br /&gt;Value"&lt;/span&gt;.ToMcml(&lt;span style="color:#a31515;"&gt;"AnotherMcmlProperty"&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;After this is ready, adding overloads for additional value types is a pretty straight-forward process.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Converting Reference Types to Property Sets&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Converting Reference Types is not as easy and will require some additional code and the use of Reflection. If we want these extension methods to be really reusable we want them to be able to act over any type and not just a specific one. This means we have to resort to extending type “object”, base of any other type in the framework, and re-use any other extension method we had already implemented to convert value types, in the following way:&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #339966 1.5pt double; PADDING-RIGHT: 4pt; BORDER-TOP: #339966 1.5pt double; PADDING-LEFT: 4pt; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 1pt; BORDER-LEFT: #339966 1.5pt double; PADDING-TOP: 1pt; BORDER-BOTTOM: #339966 1.5pt double; mso-element: para-border-div"&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; ToPropertySet(&lt;span style="color:blue;"&gt;this&lt;/span&gt; &lt;span style="color:blue;"&gt;object&lt;/span&gt; target, String name) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; result = &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Empty;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; type = target.GetType();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;result += &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;"\n&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!-- Main Type Name: {0} --&amp;gt;"&lt;/span&gt;,&lt;br /&gt;type.Name);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;PropertyInfo[] propertyInfoArray = type.GetProperties();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;result += &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;"\n&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!-- Field count: {0} --&amp;gt;"&lt;/span&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;propertyInfoArray.Length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (PropertyInfo propertyInfo &lt;span style="color:blue;"&gt;in&lt;/span&gt; propertyInfoArray) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;result += &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-size:85%;"&gt;"\n&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&amp;lt;!-- {0} --&amp;gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;propertyInfo.PropertyType.Name);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;switch&lt;/span&gt; (propertyInfo.PropertyType.Name){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;case&lt;/span&gt; &lt;span style="color:#a31515;"&gt;"String"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;result += &lt;span style="color:#a31515;"&gt;"\n&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;"&lt;/span&gt; + &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;((&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;)propertyInfo.GetValue(target,&lt;span style="color:blue;"&gt;null&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;.ToMcml(propertyInfo.Name);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;result = &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;"\n&amp;lt;Entries&amp;gt;{0}\n&amp;lt;/Entries&amp;gt;"&lt;/span&gt;,&lt;br /&gt;result);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (name != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; result = &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#a31515;"&gt;"&amp;lt;PropertySet Name=\"{1}\"&amp;gt;{0}\n&amp;lt;/PropertySet&amp;gt;"&lt;/span&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;result, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;name);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;} &lt;span style="color:blue;"&gt;else&lt;/span&gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; result = &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;&lt;span style="font-size:85%;"&gt;"&amp;lt;PropertySet&amp;gt;{0}\n&amp;lt;/PropertySet&amp;gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="font-size:85%;"&gt;result);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Although up to this point this method will only convert properties of String type, it is not a problem to add additional conversions methods and cases for value types.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;It is also possible to change the “&lt;span class="SpellE"&gt;String.Format&lt;/span&gt;” method calls by proper XML handling techniques; however this is beyond the purposes of this article.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;The result: MCML&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Once we have a reference to the namespace where these methods are implemented, we can apply them the following way:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Declaring a new reference type (the C# 3.0 &lt;span class="GramE"&gt;way&lt;/span&gt;):&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #339966 1.5pt double; PADDING-RIGHT: 4pt; BORDER-TOP: #339966 1.5pt double; PADDING-LEFT: 4pt; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 1pt; BORDER-LEFT: #339966 1.5pt double; PADDING-TOP: 1pt; BORDER-BOTTOM: #339966 1.5pt double; mso-element: para-border-div"&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; TestType {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; Name { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; ID { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; VideoUri { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Instantiating, initializing and calling the extension method:&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #339966 1.5pt double; PADDING-RIGHT: 4pt; BORDER-TOP: #339966 1.5pt double; PADDING-LEFT: 4pt; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 1pt; BORDER-LEFT: #339966 1.5pt double; PADDING-TOP: 1pt; BORDER-BOTTOM: #339966 1.5pt double; mso-element: para-border-div"&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;TestType target = &lt;span style="color:blue;"&gt;new&lt;/span&gt; TestType();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; name = &lt;span style="color:#a31515;"&gt;"TestPropertySetName"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;target.ID = &lt;span style="color:#a31515;"&gt;"{5B1BFC9A-9BFE-42f8-9655-B736496CAA4B}"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;target.Name = &lt;span style="color:#a31515;"&gt;"TestName"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;target.VideoUri = &lt;span style="color:#a31515;"&gt;"http://www.test.com/"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(target.ToPropertySet(name));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Following the output in the console:&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #339966 1.5pt double; PADDING-RIGHT: 4pt; BORDER-TOP: #339966 1.5pt double; PADDING-LEFT: 4pt; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 1pt; BORDER-LEFT: #339966 1.5pt double; PADDING-TOP: 1pt; BORDER-BOTTOM: #339966 1.5pt double; mso-element: para-border-div"&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;PropertySet&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt; &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:red;"  &gt;Name&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;=&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;"&lt;span style="color:blue;"&gt;TestPropertySetName&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;Entries&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;!--&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:green;"  &gt; Main Type Name: TestType &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;!--&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:green;"  &gt; Field count: 3 &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;!--&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:green;"  &gt; String &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;cor:String&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt; &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:red;"  &gt;Name&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;=&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;"&lt;span style="color:blue;"&gt;Name&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;String&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;TestName&lt;/span&gt;"&lt;span style="color:blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;!--&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:green;"  &gt; String &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;cor:String&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt; &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:red;"  &gt;Name&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;=&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;"&lt;span style="color:blue;"&gt;ID&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;String&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;{5B1BFC9A-9BFE-42f8-9655-B736496CAA4B}&lt;/span&gt;"&lt;span style="color:blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;!--&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:green;"  &gt; String &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;--&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;cor:String&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt; &lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:red;"  &gt;Name&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;=&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';" &gt;"&lt;span style="color:blue;"&gt;VideoUri&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;String&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://www.test.com/&lt;/span&gt;"&lt;span style="color:blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;Entries&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; BACKGROUND: #f8f9e3; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-layout-grid-align: none; mso-border-alt: double #339966 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:#a31515;"  &gt;PropertySet&lt;/span&gt;&lt;span style="mso-no-proof: yes;font-family:'Courier New';color:blue;"  &gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;This is a definitely useful technique for web-hosted MCML applications which backend is implemented using version 3.5 of the .NET Framework. Although this is not likely to happen any time soon, I sincerely cannot wait for it &lt;span style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-char-type: symbolfont-family:Wingdings;" &gt;&lt;span style="mso-char-type: symbol;font-family:Wingdings;" &gt;J&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6576989672957961799-3528233925765034894?l=marvinvarela.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marvinvarela.blogspot.com/feeds/3528233925765034894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6576989672957961799&amp;postID=3528233925765034894' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/3528233925765034894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/3528233925765034894'/><link rel='alternate' type='text/html' href='http://marvinvarela.blogspot.com/2007/05/using-c-3.html' title='Using C# 3.0&apos;s Extension Methods to generate MCML from Reference types'/><author><name>Marvin Varela</name><uri>http://www.blogger.com/profile/14244106475716199419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6576989672957961799.post-9138833392334370042</id><published>2007-05-07T10:05:00.000-06:00</published><updated>2007-05-17T16:47:53.720-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Media Center'/><category scheme='http://www.blogger.com/atom/ns#' term='MCML'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Extended MCML Schema</title><content type='html'>&lt;span style="font-family:verdana;color:#000099;"&gt;If you have developed user interfaces for Media Center in Windows Vista using MCML and Visual Studio 2005 you probably have noticed that even with the corresponding SDK installed "Intellisense" ability is lost once you have gone too deep into the intricacies of MCML syntax. This also provokes several sections are marked as invalid by the syntax verifier even when they run perfectly when tested with the rendering engine.&lt;br /&gt;&lt;br /&gt;During the past weekend I started researching for the cause of this issue and how to solve it. I already knew XML-based files were verified using an XML schema installed as an add-on to Visual Studio, however, I didn't know where those files live and was somewhat uncertain what the actual structure of the file would be.&lt;br /&gt;&lt;br /&gt;After a couple of Internet searches I found out the folder:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000000;"&gt;%ProgramFiles%\Microsoft Visual Studio 8\Xml\Schemas&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;A quick look on it took me to the file "mcml2006.xsd" which is editable from Visual Studio.&lt;br /&gt;&lt;br /&gt;After several tries I was able to introduce the first change, which was adding an "Animation" as a valid entry in a "PropertySet". From there everything else was relatively simple and I ended up adding several other entries that I knew were valid but not accepted by the syntax verifier or had Intellisense support.&lt;br /&gt;&lt;br /&gt;The result can be downloaded from here:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;color:#000099;"&gt;&lt;span style="color:#3366ff;"&gt;&lt;a href="http://www.murven.com/archive/mcml2006.zip"&gt;http://www.murven.com/archive/mcml2006.zip&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;For installation simply uncompress and copy to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000000;"&gt;%ProgramFiles%\Microsoft Visual Studio 8\Xml\Schemas&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Please send your comments and questions and let me know if I left any important entry out of it.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#000099;"&gt;*****UPDATE*******&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#000099;"&gt;After writing markup for several days I noticed there were several other missing entries (Including the requested &lt;keyhandler/&gt;). You can download the new update from here:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;color:#000099;"&gt;&lt;a href="http://www.murven.com/archive/mcml2006.zip"&gt;http://www.murven.com/archive/mcml2006.zip&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;color:#000099;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6576989672957961799-9138833392334370042?l=marvinvarela.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marvinvarela.blogspot.com/feeds/9138833392334370042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6576989672957961799&amp;postID=9138833392334370042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/9138833392334370042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/9138833392334370042'/><link rel='alternate' type='text/html' href='http://marvinvarela.blogspot.com/2007/05/extended-mcml-schema.html' title='Extended MCML Schema'/><author><name>Marvin Varela</name><uri>http://www.blogger.com/profile/14244106475716199419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6576989672957961799.post-8693115415954650107</id><published>2007-05-07T09:29:00.000-06:00</published><updated>2007-05-07T09:42:04.556-06:00</updated><title type='text'>English Blog</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#000099;"&gt;After some thinking I decided it was time to start an English Blog.&lt;br /&gt;&lt;br /&gt;I have been maintaining my &lt;/span&gt;&lt;a href="http://murven.spaces.live.com/"&gt;&lt;span style="color:#3366ff;"&gt;Spanish blog&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000099;"&gt; for a couple of years now, but with the increasing need of publishing content for the English-speaking readers, maybe I delayed this a bit longer than I should.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;I also decided this was going to be a tech-only blog; after all, almost everyone interested in my personal stuff are either Spanish or Portuguese speakers and therefore I will continue to post personal stuff only there. I will also leave my posts for hobbie-related stuff out of this blog, meaning you won't see anything on photography, numismatics or anime around here.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;However, as there is a noticeable lack of good tech-related material in Spanish in certain areas I am related with, I will do my best post for both languages on those topics.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;I hope this will become a good source of information in topics like Media Center, Windows Vista, .NET Framework 3.0, etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:100%;color:#000099;"&gt;Thanks for your visit and please feel free to leave your comments.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6576989672957961799-8693115415954650107?l=marvinvarela.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marvinvarela.blogspot.com/feeds/8693115415954650107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6576989672957961799&amp;postID=8693115415954650107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/8693115415954650107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6576989672957961799/posts/default/8693115415954650107'/><link rel='alternate' type='text/html' href='http://marvinvarela.blogspot.com/2007/05/english-blog.html' title='English Blog'/><author><name>Marvin Varela</name><uri>http://www.blogger.com/profile/14244106475716199419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
