<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Needs Improvement</title>
        <link>http://www.jtleigh.com/blogs/colinc/Default.aspx</link>
        <description>Colin Coller's thoughts on software development.</description>
        <language>en-CA</language>
        <copyright>Colin Coller</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <image>
            <title>Needs Improvement</title>
            <url>http://www.jtleigh.com/blogs/images/RSS2Image.gif</url>
            <link>http://www.jtleigh.com/blogs/colinc/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Introducing Spencer</title>
            <category>Commerce Server 2007</category>
            <category>Ecommerce</category>
            <category>.NET</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/10/12/introducing-spencer.aspx</link>
            <description>&lt;p&gt;I've started a new project called &lt;a target="_blank" href="http://spencer.codeplex.com/"&gt;Spencer&lt;/a&gt;.  The goal of the project is to demonstrate how e-commerce applications can be built from simple, composable services, with an emphasis on scalability, flexibility, "multibility" (multi-tenant, -brand, -channel, -store, etc), and platform independence.  The project's code will be written in C# using &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WCF&lt;/a&gt;, &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/netframework/aa663328.aspx"&gt;WF&lt;/a&gt;, &lt;a target="_blank" href="http://www.codeplex.com/entlib"&gt;Enterprise Library&lt;/a&gt;, and &lt;a target="_blank" href="http://www.codeplex.com/unity/"&gt;Unity&lt;/a&gt;, with examples written to integrate with &lt;a target="_blank" href="http://www.microsoft.com/commerceserver/en/us/default.aspx"&gt;Commerce Server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've released the source for two services already:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a href="http://spencer.codeplex.com/Wiki/View.aspx?title=Product%20Feedback%20Service"&gt;Product Feedback Service&lt;/a&gt; for retrieving feedback about products, including ratings, recommendations, and reviews.&lt;/li&gt;
    &lt;li&gt;Product Image Service (no page yet, but the code's in TFS) for retrieving images of products.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the next few weeks I'll be releasing additional services, and posting additional information about the project, the services, and techniques for combining the services into applications.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Colin&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/13.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/10/12/introducing-spencer.aspx</guid>
            <pubDate>Mon, 12 Oct 2009 17:02:39 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/13.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/10/12/introducing-spencer.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/13.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Defining Events and Writing Operations Guides</title>
            <category>.NET</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/09/13/defining-events-and-writing-operations-guides.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Tess Ferrandez has written &lt;a href="http://blogs.msdn.com/tess/archive/2009/09/09/first-step-in-troubleshooting-complex-issues-define-and-scope-your-issue-properly.aspx"&gt;a great post describing the questions she asks when troubleshooting a problem&lt;/a&gt;.  Her nine questions are not only a great way to create a problem description; they’re also a great way to define events that occur in your application, and to write an operations guide that describes the events and what to do when they do occur.  For example:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"What is happening?”&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What happened?  &lt;em&gt;&lt;font color="#3366ff"&gt;The customer wish list feature was unable to retrieve the number of items in a customer’s wish list because of an unhandled exception: …&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;When did the event occur?  &lt;em&gt;&lt;font color="#3366ff"&gt;September 12, 2009&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What application did the event occur in?  &lt;em&gt;&lt;font color="#3366ff"&gt;Web storefront&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Who was using the application when the event occurred?  &lt;em&gt;&lt;font color="#3366ff"&gt;colincatjtleigh&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"What did you expect to happen?”&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What was the application doing when the event occurred?  &lt;em&gt;&lt;font color="#3366ff"&gt;Calling the Commerce Server 2007 orders API to retrieve the customer’s wish list basket.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"When is it happening?”&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What was the user doing when the event occurred?  &lt;em&gt;&lt;font color="#3366ff"&gt;Loading a page that displays the quick cart link in the top navigation menu.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;…on what page?  &lt;em&gt;&lt;font color="#3366ff"&gt;/Profile/MyAccount.aspx&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;…on what server?  &lt;em&gt;&lt;font color="#3366ff"&gt;EXT-WEB-12&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;…in what environment?  &lt;em&gt;&lt;font color="#3366ff"&gt;Production&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;…etc?  &lt;em&gt;&lt;font color="#3366ff"&gt;SiteName = “SweetDeal”; BasketId = {…}; BasketName = “WishList”&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"When did it start happening?”&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;N/A&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"How does this problem affect you?”&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;How does the event affect the user or other users of the application?  &lt;em&gt;&lt;font color="#3366ff"&gt;The user won’t see the number of items in their wish list in the quick cart link in the top navigation menu.  The page will still load, however.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;How severe is the event?  &lt;em&gt;&lt;font style="BACKGROUND-COLOR: #ffffff" color="#3366ff"&gt;This is an error.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What priority should be given to investigating and resolving the event relative to other events, and why?  &lt;em&gt;&lt;font color="#3366ff"&gt;This should be medium priority.  This may be a data issue affecting only this customer, but it may also be an issue with the orders subsystem that would affect other customers.  This may prevent this customer from viewing, adding items to, or removing items from their wish list.  This will not prevent this customer from using the core e-commerce functionality.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"What do you think the problem is? and what data are you basing this on?"&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What are some of the causes for the event?  &lt;em&gt;&lt;font color="#3366ff"&gt;Invalid wish list basket data.  The orders database being unavailable.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What has historically caused the event?  &lt;em&gt;&lt;font color="#3366ff"&gt;In most cases, this issue is caused by incorrect wish list basket data from old wish list baskets that were improperly migrated from R4.0 to R4.5.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"What have you tried so far?"&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What are some of the steps that should be taken when investigating the event?   &lt;em&gt;&lt;font color="#3366ff"&gt;Confirm that the orders subsystem is functional.  Export the customer’s wish list basket using the BASEXPORT utility.  Inspect the exported basket to ensure it contains the correct data for a wish list basket.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Where would information helpful or necessary to investigating the event be?  &lt;em&gt;&lt;font color="#3366ff"&gt;The server event log.  The customer’s wish list basket.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;What are the standard processes for resolving the event?  &lt;em&gt;&lt;font color="#3366ff"&gt;If this is a data issue affecting only this customer, flush the customer’s wish list basket using the BASFLUSH utility.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"What is the expected resolution?"&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;How can you determine whether the event has been resolved?  &lt;em&gt;&lt;font color="#3366ff"&gt;The customer can add an item to their wish list, load a subsequent page, and see the number of items in their wish list in the quick cart link.&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;"Is there anything that would prohibit certain troubleshooting steps or solutions?"&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;N/A&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;It's easy to log events, but it's much more difficult to define events that are worth logging or that are useful.  B&lt;/font&gt;&lt;font face="Arial"&gt;y asking these questions as you define events, and by documenting the answers in the events and in an operations guide, you can make it much easier for others to operate and understand your application.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Cheers,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Colin&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/11.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/09/13/defining-events-and-writing-operations-guides.aspx</guid>
            <pubDate>Sun, 13 Sep 2009 20:37:57 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/11.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/09/13/defining-events-and-writing-operations-guides.aspx#feedback</comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/11.aspx</wfw:commentRss>
        </item>
        <item>
            <title>5 Different .ca Wish Lists</title>
            <category>Ecommerce</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/09/09/5-different-.ca-wish-lists.aspx</link>
            <description>&lt;style id="Wish List_6418_Styles" type="text/css"&gt;&lt;!--table
	{mso-displayed-decimal-separator:"\.";
	mso-displayed-thousand-separator:"\,";}
.xl656418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:700;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:general;
	vertical-align:top;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl666418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:700;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:center;
	vertical-align:top;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl676418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:700;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:general;
	vertical-align:top;
	border:.5pt solid windowtext;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl686418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:center;
	vertical-align:top;
	border:.5pt solid windowtext;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl696418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:general;
	vertical-align:top;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl706418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:left;
	vertical-align:top;
	border:.5pt solid windowtext;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl716418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:center;
	vertical-align:top;
	border:.5pt solid windowtext;
	background:#92D050;
	mso-pattern:black none;
	white-space:normal;}
.xl726418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:center;
	vertical-align:top;
	border:.5pt solid windowtext;
	background:#C0504D;
	mso-pattern:black none;
	white-space:normal;}
.xl736418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:700;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:left;
	vertical-align:top;
	border:.5pt solid windowtext;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl746418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:left;
	vertical-align:top;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl756418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:center;
	vertical-align:top;
	mso-background-source:auto;
	mso-pattern:auto;
	white-space:normal;}
.xl766418
	{padding-top:1px;
	padding-right:1px;
	padding-left:1px;
	mso-ignore:padding;
	color:windowtext;
	font-size:11.0pt;
	font-weight:400;
	font-style:normal;
	text-decoration:none;
	font-family:Calibri, sans-serif;
	mso-font-charset:0;
	mso-number-format:General;
	text-align:center;
	vertical-align:top;
	border:.5pt solid windowtext;
	background:#FFC000;
	mso-pattern:black none;
	white-space:normal;}
--&gt;&lt;/style&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Did a quick comparison of the wish list functionality on 5 large .ca e-commerce websites.&lt;/font&gt;&lt;/p&gt;
&lt;div id="Wish List_6418" x:publishsource="Excel" align="left"&gt;
&lt;table style="TABLE-LAYOUT: fixed; WIDTH: 907pt; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="1206" border="0" class="xl696418"&gt;
    &lt;colgroup&gt;&lt;col class="xl696418" style="WIDTH: 387pt; mso-width-source: userset; mso-width-alt: 18870" width="516" /&gt;&lt;col class="xl756418" style="WIDTH: 104pt; mso-width-source: userset; mso-width-alt: 5046" span="5" width="138" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr class="xl656418" style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl656418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl666418" style="WIDTH: 104pt" width="138"&gt;bestbuy.ca&lt;/td&gt;
            &lt;td class="xl666418" style="WIDTH: 104pt" width="138"&gt;futureshop.ca&lt;/td&gt;
            &lt;td class="xl666418" style="WIDTH: 104pt" width="138"&gt;sears.ca&lt;/td&gt;
            &lt;td class="xl666418" style="WIDTH: 104pt" width="138"&gt;costco.ca&lt;/td&gt;
            &lt;td class="xl666418" style="WIDTH: 104pt" width="138"&gt;chapters.indigo.ca&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 30pt" height="40"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 30pt" width="516" height="40"&gt;Ways to view wish list:&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;2&lt;br /&gt;
            top nav + my account&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;1&lt;br /&gt;
            my account&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;2&lt;br /&gt;
            top nav + my account&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;1&lt;br /&gt;
            top nav&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;1&lt;br /&gt;
            top nav&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt;Ways to add items to wish list:&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;2&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;1&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;1&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;1&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Add from product details page?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Add from category page?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Add from search results page?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 30pt" height="40"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 30pt" width="516" height="40"&gt;Add from product comparison page?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N/A&lt;br /&gt;
            (no comparison)&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N/A&lt;br /&gt;
            (no comparison)&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N/A&lt;br /&gt;
            (no comparison)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl736418" style="WIDTH: 907pt; HEIGHT: 15pt" width="1206" colspan="6" height="20"&gt;Data displayed on wish list:&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Date added?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Product name?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 30pt" height="40"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 30pt" width="516" height="40"&gt;Availability?&lt;/td&gt;
            &lt;td class="xl766418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;U&lt;br /&gt;
            (claims to)&lt;/td&gt;
            &lt;td class="xl766418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;U&lt;br /&gt;
            (claims to)&lt;/td&gt;
            &lt;td class="xl766418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;U&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Price?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Sales?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl766418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;U&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Breaks bundles out in details?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl766418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;U&lt;/td&gt;
            &lt;td class="xl766418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;U&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl676418" style="WIDTH: 907pt; HEIGHT: 15pt" width="1206" colspan="6" height="20"&gt;Editable data on wish list:&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 60pt" height="80"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 60pt" width="516" height="80"&gt;Priority?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;br /&gt;
            (5 point scale, "don't buy this for me" to "must have")&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Quantity desired?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Comments?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 45pt" height="60"&gt;
            &lt;td class="xl706418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 45pt" width="516" height="60"&gt;Other?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;br /&gt;
            (name, birthday, about me)&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 45pt" height="60"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 45pt" width="516" height="60"&gt;Can be sorted?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;br /&gt;
            (price, priority, date added, last updated)&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt;Printable view?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt;Can have multiple named baskets?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt;Can be made public or visible to others?&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;Can be emailed to others?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 60pt" height="80"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 60pt" width="516" height="80"&gt;When adding items, navigates to:&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;wish list page&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;wish list page&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;intermediate page&lt;br /&gt;
            (related products, other navigation paths)&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;remains on product page&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;wish list page&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl696418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt;Can move item from wish list to cart?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 60pt" height="80"&gt;
            &lt;td class="xl736418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 60pt" width="516" height="80"&gt;When moving item from wish list to cart, navigates to:&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;remains on wish list page&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;remains on wish list page&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;intermediate page (related products, other navigation paths)&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;remains on wish list page&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;cart page&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl736418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;After moving item from wish list to cart, item is removed from wish list?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl746418" style="WIDTH: 387pt; HEIGHT: 15pt" width="516" height="20"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td class="xl756418" style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 45pt" height="60"&gt;
            &lt;td class="xl676418" style="WIDTH: 387pt; HEIGHT: 45pt" width="516" height="60"&gt;Can move item from cart back to wish list?&lt;/td&gt;
            &lt;td class="xl716418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;Y&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;br /&gt;
            ("save for later" not part of wish list)&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
            &lt;td class="xl726418" style="WIDTH: 104pt; BORDER-LEFT-STYLE: none" width="138"&gt;N&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr style="HEIGHT: 15pt" height="20"&gt;
            &lt;td class="xl736418" style="WIDTH: 387pt; BORDER-TOP-STYLE: none; HEIGHT: 15pt" width="516" height="20"&gt;When moving item from cart back to wish list, navigates to:&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;remains on cart page&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N/A&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N/A&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N/A&lt;/td&gt;
            &lt;td class="xl686418" style="WIDTH: 104pt; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" width="138"&gt;N/A&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="WIDTH: 387pt" width="516"&gt; &lt;/td&gt;
            &lt;td style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
            &lt;td style="WIDTH: 104pt" width="138"&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Colin&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/10.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/09/09/5-different-.ca-wish-lists.aspx</guid>
            <pubDate>Wed, 09 Sep 2009 04:16:56 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/10.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/09/09/5-different-.ca-wish-lists.aspx#feedback</comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/10.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Injecting Commerce Server 2007 Profile Context</title>
            <category>Commerce Server 2007</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/09/04/injecting-commerce-server-2007-profile-context.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;&lt;a href="http://www.jtleigh.com/blogs/colinc/archive/2009/08/21/injecting-commerce-server-2007-catalog-context.aspx"&gt;Injecting Commerce Server 2007 Catalog Context&lt;/a&gt; demonstrated a simple technique for injecting catalog context and for writing catalog code that can be used on both the web tier and the service tier.  The same technique can be used to get a Commerce Server 2007 profile context.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;First, we define the factory interface for creating a profile context:&lt;/font&gt;&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime.Profiles;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Factory used to create catalog context objects for accessing the Commerce Server profile&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; subsystem.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IProfileContextFactory&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Creates a profile context.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&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 &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProfileContext"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; object.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt;         &lt;span style="COLOR: #2b91af"&gt;ProfileContext&lt;/span&gt; CreateProfileContext();&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;Second, we implement the factory interface using &lt;font face="Courier New"&gt;CommerceContext.Current.ProfileSystem&lt;/font&gt; for the web tier:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime.Profiles;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; A profile context factory that can be used on the web tier.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&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;WebTierProfileContextFactory&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IProfileContextFactory&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; IProfileContextFactory Members&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets the profile system for the current commerce context.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&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 current commerce context's &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProfileContext"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; object.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProfileContext&lt;/span&gt; CreateProfileContext()&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt;         {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt;             &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;CommerceContext&lt;/span&gt;.Current.ProfileSystem;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt;         }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// IProfileContextFactory Members&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Third, we implement the factory interface for the service tier.  This is a bit more involved than creating a catalog context on the service tier was, as there isn't a "&lt;font face="Courier New"&gt;ProfileSiteAgent&lt;/font&gt;" class or a "&lt;font face="Courier New"&gt;ProfileContext.Create&lt;/font&gt;" method that does the heavy lifting for us.  We need to use &lt;font face="Courier New"&gt;CommerceResourceCollection&lt;/font&gt; to load the connection strings for the profile subsystem, create a &lt;font face="Courier New"&gt;DebugContext&lt;/font&gt;, and pass everything into the &lt;font face="Courier New"&gt;ProfileContext&lt;/font&gt; constructor:&lt;/font&gt;&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime.Configuration;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime.Diagnostics;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime.Profiles;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; A profile context factory that can be used on the service tier.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ServiceTierProfileContextFactory&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IProfileContextFactory&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; IProfileContextFactory Members&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Creates a new profile context.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&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 new &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProfileContext"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; object.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProfileContext&lt;/span&gt; CreateProfileContext()&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt;         {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;CommerceResourceCollection&lt;/span&gt; resources;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;CommerceResource&lt;/span&gt; resource;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; profileServiceConnectionString;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; commerceProviderConnectionString;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; bizDataStoreConnectionString;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;DebugContext&lt;/span&gt; debugContext;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;ProfileContext&lt;/span&gt; profileContext;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// NOTE: This is a trivial implementation of IProfileContextFactory.  A more realistic&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// implementation would inject the resources, inject the debug context, have error&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   31&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// handling, caching, etc.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   32&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   33&lt;/span&gt;             resources = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;CommerceResourceCollection&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"MySite"&lt;/span&gt;); &lt;span style="COLOR: green"&gt;// TODO: Read the site name from configuration.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   34&lt;/span&gt;             resource = resources[&lt;span style="COLOR: #a31515"&gt;"Biz Data Service"&lt;/span&gt;];&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   35&lt;/span&gt;             profileServiceConnectionString = (&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;)resource[&lt;span style="COLOR: #a31515"&gt;"s_ProfileServiceConnectionString"&lt;/span&gt;];&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   36&lt;/span&gt;             commerceProviderConnectionString = (&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;)resource[&lt;span style="COLOR: #a31515"&gt;"s_CommerceProviderConnectionString"&lt;/span&gt;];&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   37&lt;/span&gt;             bizDataStoreConnectionString = (&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;)resource[&lt;span style="COLOR: #a31515"&gt;"s_BizDataStoreConnectionString"&lt;/span&gt;];&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   38&lt;/span&gt;             debugContext = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;NoOperationDebugContext&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;DebugMode&lt;/span&gt;.Production);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   39&lt;/span&gt;             &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;profileContext = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProfileContext&lt;/span&gt;(profileServiceConnectionString, commerceProviderConnectionString, bizDataStoreConnectionString, debugContext);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   40&lt;/span&gt;             &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; profileContext;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   41&lt;/span&gt;         }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   42&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   43&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// IProfileContextFactory Members&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   44&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   45&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   46&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font face="Arial"&gt;(Note the disclaimer.  This is a trivial implementation.  If you get your service interfaces right and have a dependency injection strategy, though, you can go a long way with trivial implementations. :)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The rest of the steps are the same as in the &lt;a href="http://www.jtleigh.com/blogs/colinc/archive/2009/08/21/injecting-commerce-server-2007-catalog-context.aspx"&gt;original post&lt;/a&gt;.  We&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;configure our application's dependency injection framework to map the factory interface to the factory implementation appropriate to the tier;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;write code that depends on the factory to create profile contexts, advertising the dependency using&lt;/font&gt; &lt;font face="Courier New"&gt;DependencyAttribute&lt;/font&gt;&lt;font face="Arial"&gt;;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;creating a mock implementation of the factory for testing;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;That's it.  The code written against the factory interface can be used in both the web tier and the service tier without modification and without needing to know where it lives in the solution architecture.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Cheers,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Colin&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/9.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/09/04/injecting-commerce-server-2007-profile-context.aspx</guid>
            <pubDate>Fri, 04 Sep 2009 19:10:05 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/9.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/09/04/injecting-commerce-server-2007-profile-context.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/9.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Don't Put It In The Catalog (1 of ...)</title>
            <category>Commerce Server 2007</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/09/03/dont-put-it-in-the-catalog-1.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;I don't like storing non-product data in the Commerce Server catalog system.  I know &lt;a href="http://blog.kellyheard.com/extensibility-or-hack/"&gt;some smart people feel differently&lt;/a&gt;, and I respect their experience and opinions, but I've seen some incredible abuse of the catalog system.  Here's one of the abuses that helped push me into the "If it's not a saleable product, it doesn't go into the catalog." camp.&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;em&gt;Background: I've been working on an extremely large e-commerce project for the past 16 months.  We took over the project's architecture, design, and implementation from a Microsoft Commerce Server partner, one that had supposedly built large Commerce Server sites before, only to find their solution was very incomplete and had some very significant problems at scale.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;
&lt;p&gt;&lt;font face="Arial"&gt;My client has a large movie and music catalog, and licenses information about their products from &lt;a href="http://www.muze.com/"&gt;Muze&lt;/a&gt;, a leading media information provider.  In the original solution, all of this media information was being stored in a catalog.  The catalog contained&lt;/font&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;special non-purchasable products representing artists, albums, discs, tracks, etc;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;relationships between non-purchasable products, to associate artists with their albums, albums with their discs, discs with their tracks, and so on; and&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;relationships between purchasable and non-purchasable products, to associate music products with the artist and album products that contain the media information for the product.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;I'm assuming the original team saw some advantages in doing this:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;They could edit the media information in Catalog Manager. &lt;/strong&gt; This would have been helpful during development, but the client wasn't going to do this, and it became increasingly difficult to use as the amount of data increased.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;They could stage the media information between environments using CSS.&lt;/strong&gt;  This also would have been helpful, but the client wasn't going to edit or stage this information, so they could have just as easily inserted this information directly into all environments.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;They could use the catalog API for all of their data access.&lt;/strong&gt;  They didn't, but they could have.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;They didn't need a custom database.&lt;/strong&gt;  They still created custom databases for other components, but they wouldn't have needed one for this one.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;However, our team had to deal with the disadvantages, which were much more significant:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;The catalogs were huge.&lt;/strong&gt;  An average music product was composed of ~16 different products, plus relationships, including ~12 track products, 1 disc product, 1 album product, 1 artist product, and the actual music product itself.  A good-sized music catalog with 100,000 purchasable music products would have translated into ~1.6 million products.  The entire Muze catalog would have translated into more than 16 million products. &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;We needed to write custom code to maintain the data.&lt;/strong&gt;  We couldn't simply take the media information from Muze and bcp it into a database.  We needed to write custom code to transform the media information into new products and relationships or updates to existing products and relationships.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;We needed to write custom code to retrieve the data.&lt;/strong&gt;  We couldn't simply execute a sproc that would return the media information for a specific product.  We needed to write custom code to get the product's related artist and album products, then get the album product's related disc products, then get the disc products' related track products, and so on.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;The performance was terrible.&lt;/strong&gt;  Accessing the data for music products was expensive.  In some extreme cases it took ~100 queries to retrieve the media information for a single product.  Even with multiple layers of caching, the music product detail pages performed terribly, and there was no way to hit our performance targets for those pages.&lt;/font&gt;  &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;We couldn't transition the component to non-CS developers.&lt;/strong&gt;  The only people who could work on the component were developers who were familiar with the catalog and the catalog API.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;We wound up rewriting the media information component to use a custom database instead of the catalog.  This negated the disadvantages above and &lt;strong&gt;&lt;em&gt;&lt;u&gt;greatly&lt;/u&gt;&lt;/em&gt; &lt;/strong&gt;improved performance.  &lt;/font&gt;&lt;font face="Arial"&gt;Unfortunately, because the original component was "code complete", this was unplanned work.  If the original team had given more thought to the question of where to store the data, or had a default position of "only products in the catalog", we probably wouldn't have had to spend time and money we did on rewriting this component.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Colin&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/8.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/09/03/dont-put-it-in-the-catalog-1.aspx</guid>
            <pubDate>Thu, 03 Sep 2009 18:48:22 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/8.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/09/03/dont-put-it-in-the-catalog-1.aspx#feedback</comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/8.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Decrypting ConfigurationSection XML</title>
            <category>.NET</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/08/26/decrypting-configurationsection-xml.aspx</link>
            <description>&lt;p&gt;I'm working on a project whose configuration system  manipulates and deserializes blocks of XML as &lt;font face="Courier New"&gt;ConfigurationSection&lt;/font&gt; objects.  Today we had to make the system support &lt;a href="http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx"&gt;encrypted configuration sections&lt;/a&gt;, and we were surprised to find that it wasn't immediately obvious how to do it.  The most common answer to the question of "How do I programmatically decrypt a configuration section?" is "Use &lt;a href="http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.unprotectsection.aspx"&gt;&lt;font face="Courier New"&gt;SectionInformation.UnprotectSection&lt;/font&gt;&lt;/a&gt;!"  Unfortunately, this wouldn't work for us, because we were working with blocks of XML and not &lt;font face="Courier New"&gt;ConfigurationSection&lt;/font&gt; objects.  We needed to decrypt before we could deserialize, but it seemed like we needed to deserialize before we could decrypt.  Finally, after much trial and error, many searches, and some &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt; work, we came up with the following:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&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;string&lt;/span&gt; DecryptConfigurationSectionXml(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; xml)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: #2b91af"&gt;XmlDocument&lt;/span&gt; document;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; providerName;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: #2b91af"&gt;ProtectedConfigurationProvider&lt;/span&gt; provider;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: #2b91af"&gt;XmlNode&lt;/span&gt; node;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    document = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XmlDocument&lt;/span&gt;();&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    document.LoadXml(xml);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    providerName = document.DocumentElement.GetAttribute(&lt;span style="COLOR: #a31515"&gt;"configProtectionProvider"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.IsNullOrEmpty(providerName))&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        provider = &lt;span style="COLOR: #2b91af"&gt;ProtectedConfiguration&lt;/span&gt;.Providers[providerName];&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        node = provider.Decrypt(document.DocumentElement);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        xml = node.InnerXml;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; xml;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;It's extremely simple, but it took a long time to get to this point, so I thought it worth sharing. :)&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Colin&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/7.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/08/26/decrypting-configurationsection-xml.aspx</guid>
            <pubDate>Thu, 27 Aug 2009 02:46:29 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/7.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/08/26/decrypting-configurationsection-xml.aspx#feedback</comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/7.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Writing Great Unit Tests</title>
            <category>.NET</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/08/25/writing-great-unit-tests.aspx</link>
            <description>&lt;p&gt;Steve Sanderson has a great post on &lt;a href="http://blog.codeville.net/2009/08/24/writing-great-unit-tests-best-and-worst-practises/"&gt;writing great unit tests: best and worst practices&lt;/a&gt;.  The only things I'd add are:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Use a dynamic mock framework like &lt;a href="http://www.nmock.org/"&gt;NMock&lt;/a&gt;, &lt;a href="http://ayende.com/projects/rhino-mocks.aspx"&gt;Rhino Mocks&lt;/a&gt;, etc wherever possible to mock your interfaces. 
    &lt;ul&gt;
        &lt;li&gt;Don't create static mock implementations of your interfaces only to throw &lt;font face="Courier New"&gt;NotImplementedException&lt;/font&gt; or return specific values from its functions.  Instead, use dynamic mocks. &lt;/li&gt;
        &lt;li&gt;Do create static mock implementations of your interfaces where you need to set the same types of expectations over and over again on your mocks.  For example, imagine you use an &lt;font face="Courier New"&gt;ILoggingService&lt;/font&gt; interface to log events, and you want to test several components to ensure they log the correct events in the correct order.  Instead of setting up &lt;font face="Courier New"&gt;Mock&amp;lt;ILoggingService&amp;gt;&lt;/font&gt; in each test, create a reusable &lt;font face="Courier New"&gt;MockLoggingService&lt;/font&gt; that takes as input the list of events expected to be logged in the expected order, and use it across your tests. &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Don't set a lower quality bar for your tests than for your other code.
    &lt;ul&gt;
        &lt;li&gt;Extend your coding standards to your tests.  Turn &lt;em&gt;Treat Warnings As Errors&lt;/em&gt; on, enforce FxCop rules, enforce StyleCop rules, etc. &lt;/li&gt;
        &lt;li&gt;Document your tests.  Turn &lt;em&gt;Generate XML Comments&lt;/em&gt; on.  Require good, meaningful, descriptive comments describing what the code being tested should do, what the test does, and how it relates to other tests. &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Train your team on how to write good unit tests. &lt;/li&gt;
    &lt;li&gt;Review your team's unit tests. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Colin&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/6.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/08/25/writing-great-unit-tests.aspx</guid>
            <pubDate>Tue, 25 Aug 2009 13:06:31 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/6.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/08/25/writing-great-unit-tests.aspx#feedback</comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/6.aspx</wfw:commentRss>
        </item>
        <item>
            <title>A Better Product Provider</title>
            <category>Commerce Server 2007</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/08/24/a-better-product-provider.aspx</link>
            <description>&lt;p&gt;I wrote the code for &lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;a href="http://www.jtleigh.com/blogs/colinc/archive/2009/08/23/building-product-business-entities-from-commerce-server-2007-products.aspx"&gt;Building Product Business Entities From Commerce Server 2007 Products&lt;/a&gt;&lt;/font&gt; on my flight this morning.  I was sitting next to one of my teammates, we got to talking about the approach, and I wound up writing the &lt;font face="Courier New"&gt;ProductProvider&lt;/font&gt; class in the post to demonstrate how the mapping factory would work.  It's a trivial implementation.  Here's a better one.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;First, we define the provider interface for getting a product from the catalog:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Entities;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Provider used to get products from the catalog.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IProductProvider&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets a single product from a Commerce Server catalog.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&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 name="catalogId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The catalog identifier &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="String"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; of the catalog that &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; the product is to be retrieved from.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&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 name="productId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The product identifier &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="String"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; of the product that&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; is to be retrieved.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&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 name="cultureName"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The name of the culture to use to retrieve culture-specific &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; resources.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&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 &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductEntityBase"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; if the specified product exists and could be&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; retrieved, or &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see langword="null"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; if the product doesn't exist or couldn't be &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; retrieved.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt;         &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; GetProduct(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; catalogId, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; productId, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; cultureName);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Second, we implement the provider interface in terms of &lt;font face="Courier New"&gt;ICatalogContextFactory&lt;/font&gt; and &lt;font face="Courier New"&gt;IProductMappingFactory&lt;/font&gt;:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Globalization;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Catalog;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.Unity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Entities;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Mappings;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; An &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="IProductProvider"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; implementation that gets products from the Commerce&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Server catalog.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductProvider&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IProductProvider&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Properties&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ICatalogContextFactory"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to use to create the catalog &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; context.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt;         [&lt;span style="COLOR: #2b91af"&gt;Dependency&lt;/span&gt;]&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ICatalogContextFactory&lt;/span&gt; CatalogContextFactory { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductMappingFactory"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to use to create product mappings.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt;         [&lt;span style="COLOR: #2b91af"&gt;Dependency&lt;/span&gt;]&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   31&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IProductMappingFactory&lt;/span&gt; ProductMappingFactory { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   32&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   33&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Properties&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   34&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   35&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   36&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   37&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   38&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets the specified product from the specified catalog.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   39&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   40&lt;/span&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 name="catalogId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The catalog identifier.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   41&lt;/span&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 name="productId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The product identifier.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   42&lt;/span&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 &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductEntityBase"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; representing the product.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   43&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; IProductProvider Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   44&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   45&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   46&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets a single product from a Commerce Server catalog.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   47&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   48&lt;/span&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 name="catalogId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The catalog identifier &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="String"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; of the catalog that &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   49&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; the product is to be retrieved from.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   50&lt;/span&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 name="productId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The product identifier &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="String"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; of the product that&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   51&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; is to be retrieved.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   52&lt;/span&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 name="cultureName"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The name of the culture to use to retrieve culture-specific &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   53&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; resources.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   54&lt;/span&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 &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductEntityBase"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; if the specified product exists and could be&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   55&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; retrieved, or &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see langword="null"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; if the product doesn't exist or couldn't be &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   56&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; retrieved.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   57&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; GetProduct(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; catalogId, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; productId, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; cultureName)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   58&lt;/span&gt;         {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   59&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;CatalogContext&lt;/span&gt; catalogContext;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   60&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;Product&lt;/span&gt; product;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   61&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;IProductMapping&lt;/span&gt; mapping;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   62&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; entity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   63&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   64&lt;/span&gt;             catalogContext = CatalogContextFactory.CreateCatalogContext();&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   65&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;try&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   66&lt;/span&gt;             {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   67&lt;/span&gt;                 product = catalogContext.GetProduct(catalogId, productId, cultureName);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   68&lt;/span&gt;             }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   69&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;EntityDoesNotExistException&lt;/span&gt;)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   70&lt;/span&gt;             {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   71&lt;/span&gt;                 &lt;span style="COLOR: green"&gt;// If the catalog doesn't exist, throw an exception.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   72&lt;/span&gt;                 &lt;span style="COLOR: blue"&gt;try&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   73&lt;/span&gt;                 {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   74&lt;/span&gt;                     catalogContext.GetCatalog(catalogId, cultureName);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   75&lt;/span&gt;                 }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   76&lt;/span&gt;                 &lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;EntityDoesNotExistException&lt;/span&gt; ex)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   77&lt;/span&gt;                 {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   78&lt;/span&gt;                     &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="COLOR: #2b91af"&gt;CultureInfo&lt;/span&gt;.InvariantCulture, &lt;span style="COLOR: #a31515"&gt;"Catalog '{0}' does not exist."&lt;/span&gt;, catalogId), ex);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   79&lt;/span&gt;                 }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   80&lt;/span&gt;                 &lt;span style="COLOR: green"&gt;// If the product doesn't exist, return null.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   81&lt;/span&gt;                 &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   82&lt;/span&gt;             }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   83&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// If the product's active language isn't the requested culture, throw an exception.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   84&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!product.ActiveLanguage.Equals(cultureName, &lt;span style="COLOR: #2b91af"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase))&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   85&lt;/span&gt;             {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   86&lt;/span&gt;                 &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="COLOR: #2b91af"&gt;CultureInfo&lt;/span&gt;.InvariantCulture, &lt;span style="COLOR: #a31515"&gt;"Catalog '{0}' does not support culture '{1}', returning culture '{2}' instead."&lt;/span&gt;, catalogId, cultureName, product.ActiveLanguage));&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   87&lt;/span&gt;             }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   88&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;try&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   89&lt;/span&gt;             {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   90&lt;/span&gt;                 mapping = ProductMappingFactory.CreateProductMapping(product.DefinitionName);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   91&lt;/span&gt;                 entity = mapping.Map(product);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   92&lt;/span&gt;             }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   93&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;Exception&lt;/span&gt; ex)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   94&lt;/span&gt;             {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   95&lt;/span&gt;                 &lt;span style="COLOR: green"&gt;// If the mapping fails, either because we couldn't get a mapping for the specified&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   96&lt;/span&gt;                 &lt;span style="COLOR: green"&gt;// definition name or because the mapping threw an exception when trying to perform&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   97&lt;/span&gt;                 &lt;span style="COLOR: green"&gt;// the map, throw an exception.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   98&lt;/span&gt;                 &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="COLOR: #2b91af"&gt;CultureInfo&lt;/span&gt;.InvariantCulture, &lt;span style="COLOR: #a31515"&gt;"Product '{0}' in catalog '{1}' is malformed."&lt;/span&gt;, productId, catalogId), ex);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   99&lt;/span&gt;             }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  100&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; entity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  101&lt;/span&gt;         }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  102&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  103&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// IProductProvider Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  104&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  105&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  106&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  107&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;  108&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This implementation has a few key improvements over the one in the original post:&lt;/p&gt;
&lt;p&gt;1. It takes the culture name as a parameter.&lt;/p&gt;
&lt;p&gt;2. It returns &lt;font face="Courier New"&gt;null&lt;/font&gt; if the product doesn't exist.   (It could just as easily throw a different exception or return a special type of product entity indicating that the product doesn't exist.)&lt;/p&gt;
&lt;p&gt;3. It throws a meaningful exception if the catalog doesn't exist.  (This is nice to have, but it could hurt performance depending on your caching strategy and on how many requests you get for products that don't exist.)&lt;/p&gt;
&lt;p&gt;4. It throws a meaningful exception if the product isn't returned with the requested culture.&lt;/p&gt;
&lt;p&gt;5. It throws a meaningful exception if the product can't be mapped to a business entity.&lt;/p&gt;
&lt;p&gt;It's still a very simple implementation (e.g. we normally put caching here, we normally throw specific exceptions for each error condition, etc), but it's better than the original.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Colin&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/5.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/08/24/a-better-product-provider.aspx</guid>
            <pubDate>Tue, 25 Aug 2009 01:53:11 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/5.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/08/24/a-better-product-provider.aspx#feedback</comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/5.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Unity And Singletons</title>
            <category>.NET</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/08/24/unity-and-singletons.aspx</link>
            <description>&lt;p&gt;Brian Button has a great post on &lt;a href="http://www.agileprogrammer.com/oneagilecoder/archive/2009/08/23/25321.aspx"&gt;using Unity to make Singleton-ness an implementation detail&lt;/a&gt;.  I couldn't agree more.&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/4.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/08/24/unity-and-singletons.aspx</guid>
            <pubDate>Mon, 24 Aug 2009 20:07:59 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/4.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/08/24/unity-and-singletons.aspx#feedback</comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/4.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Building Product Business Entities From Commerce Server 2007 Products</title>
            <category>Commerce Server 2007</category>
            <link>http://www.jtleigh.com/blogs/colinc/archive/2009/08/23/building-product-business-entities-from-commerce-server-2007-products.aspx</link>
            <description>&lt;p&gt;Many developers write catalog code against the Commerce Server 2007 &lt;font face="Courier New"&gt;Product&lt;/font&gt; class, or against a single business entity class that represents all types of products in the catalog, and then use the product's &lt;font face="Courier New"&gt;DefinitionName&lt;/font&gt; to define behavior like so:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; DoSomething(&lt;span style="COLOR: #2b91af"&gt;ProductBusinessEntity&lt;/span&gt; product)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; ((product.DefinitionName == &lt;span style="COLOR: #a31515"&gt;"WhiteGood"&lt;/span&gt;) || (product.DefinitionName == &lt;span style="COLOR: #a31515"&gt;"BrownGood"&lt;/span&gt;))&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// Do something for appliances, consumer electronics, etc.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (product.DefinitionName == &lt;span style="COLOR: #a31515"&gt;"SoftGood"&lt;/span&gt;)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// Do something else for software.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (product.DefinitionName == &lt;span style="COLOR: #a31515"&gt;"Bundle"&lt;/span&gt;)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// Do something else for bundles of products.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;else&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// Do something else for all other types of products.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This makes their code fragile and harder to understand, test, or extend.  Fortunately, it's easy to define a business entity class for each type of product, place type-specific logic into these classes, and to build them up from products using abstract factory and dependency injection.  Here's an extremely simple example of how we do it.&lt;/p&gt;
&lt;p&gt;(I've already described how we use dependency injection to get catalog context in &lt;font face="Arial"&gt;&lt;a href="http://www.jtleigh.com/blogs/colinc/archive/2009/08/21/injecting-commerce-server-2007-catalog-context.aspx"&gt;Injecting Commerce Server 2007 Catalog Context&lt;/a&gt;&lt;/font&gt;.  I've also described how we extend the &lt;font face="Courier New"&gt;Product&lt;/font&gt; class to get property values in &lt;font face="Arial"&gt;&lt;a href="http://www.jtleigh.com/blogs/colinc/archive/2009/08/21/extension-methods-for-commerce-server-2007-products.aspx"&gt;Extension Methods For Commerce Server 2007 Products&lt;/a&gt;.&lt;/font&gt;  This post builds on the concepts and code from these two posts.)&lt;/p&gt;
&lt;p&gt;We start with our catalog schema.  For this example, I've defined &lt;font face="Courier New"&gt;WhiteGood&lt;/font&gt;, &lt;font face="Courier New"&gt;BrownGood&lt;/font&gt;, &lt;font face="Courier New"&gt;SoftGood&lt;/font&gt;, and &lt;font face="Courier New"&gt;Bundle&lt;/font&gt; products in the catalog schema.&lt;/p&gt;
&lt;p&gt;We then define our business entity class hierarchy, creating a base class for all product types, one class for each product type, and additional base classes as needed where products have properties or methods in common.  For this example, I've defined &lt;font face="Courier New"&gt;ProductEntityBase&lt;/font&gt; (base for all products), &lt;font face="Courier New"&gt;HardGoodEntityBase&lt;/font&gt; (base for physical products), &lt;font face="Courier New"&gt;WhiteGoodEntity&lt;/font&gt;, &lt;font face="Courier New"&gt;BrownGoodEntity&lt;/font&gt;, &lt;font face="Courier New"&gt;SoftGoodEntity&lt;/font&gt;, and &lt;font face="Courier New"&gt;BundleEntity&lt;/font&gt; classes:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication.Entities&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&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;see langword="abstract"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; base class for product entities.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;abstract&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Properties&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the catalog identifier &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="String"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; of the catalog that the &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; product is from.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; CatalogId { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the product identifier.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; ProductId { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the product's web identifier.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; WebId { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the product's SKU.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   31&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   32&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Sku { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   33&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   34&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   35&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the product's localized short name.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   36&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   37&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; ShortName { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   38&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   39&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   40&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the product's localized long name.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   41&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   42&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; LongName { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   43&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   44&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   45&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the product's localized short description.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   46&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   47&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; ShortDescription { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   48&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   49&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   50&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the product's localized long description.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   51&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   52&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; LongDescription { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   53&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   54&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   55&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets whether the product is enabled.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   56&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   57&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; IsEnabled { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   58&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   59&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Properties&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   60&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   61&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   62&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;(I've trimmed these to make things easier to follow.)&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;abstract&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;HardGoodEntityBase&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? LengthInBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? WidthInBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? HeightInBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? LengthOutOfBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? WidthOutOfBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? HeightOutOfBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? WeightInBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt;? WeightOutOfBox { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;WhiteGoodEntity&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;HardGoodEntityBase&lt;/span&gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;BrownGoodEntity&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;HardGoodEntityBase&lt;/span&gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SoftGoodEntity&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;BundleEntity&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;We then define our mapping interface to map from a &lt;font face="Courier New"&gt;Product&lt;/font&gt; to a business entity class:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Catalog;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Entities;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication.Mappings&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Mapping used to map Commerce Server products to product business entities.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IProductMapping&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Maps a Commerce Server product to a product business entity.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&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 name="product"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="Product"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to map from.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&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 resulting &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductEntityBase"/&amp;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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt;         &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; Map(&lt;span style="COLOR: #2b91af"&gt;Product&lt;/span&gt; product);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;We then implement the mapping interface, creating a base class for all mappings and one class for each non-abstract business entity class.  We override the &lt;font face="Courier New"&gt;MapProperties&lt;/font&gt; method in the subclasses to map the properties specific to that type of product onto the corresponding business entity class:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Catalog;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Entities;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication.Mappings&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&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;see langword="abstract"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; base class for mappings used to map Commerce Server products to &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; product business entities.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&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;typeparam name="TProductEntity"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The type of &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductEntityBase"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to map the &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Commerce Server product to.  &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;typeparamref name="TProductEntity"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; must have a &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&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;see langword="public"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; parameterless constructor.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;abstract&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductMappingBase&lt;/span&gt;&amp;lt;TProductEntity&amp;gt; : &lt;span style="COLOR: #2b91af"&gt;IProductMapping&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;where&lt;/span&gt; TProductEntity : &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;new&lt;/span&gt;()&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; IProductMapping Members&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Maps the specified Commerce Server product to a product entity.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&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 name="product"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="Product"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to map from.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&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 resulting &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;typeparamref name="ProductEntityBase"/&amp;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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; Map(&lt;span style="COLOR: #2b91af"&gt;Product&lt;/span&gt; product)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt;         {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt;             TProductEntity entity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt;             entity = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; TProductEntity();&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&gt;             MapBaseProperties(product, entity);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; entity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   31&lt;/span&gt;         }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   32&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   33&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// IProductMapping Members&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   34&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   35&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   36&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   37&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   38&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Maps the base properties of a Commerce Server product to a product entity.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   39&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   40&lt;/span&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 name="product"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="Product"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to map from.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   41&lt;/span&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 name="entity"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;typeparamref name="TProductEntity"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to map to.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   42&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;virtual&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; MapBaseProperties(&lt;span style="COLOR: #2b91af"&gt;Product&lt;/span&gt; product, TProductEntity entity)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   43&lt;/span&gt;         {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   44&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// Map built-in properties.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   45&lt;/span&gt;             entity.ProductId = product.ProductId;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   46&lt;/span&gt;             entity.CatalogId = product.CatalogName;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   47&lt;/span&gt;             entity.ShortName = product.DisplayName;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   48&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   49&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// Map required custom properties.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   50&lt;/span&gt;             entity.ShortDescription = product.GetRequiredPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"ShortDescription"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   51&lt;/span&gt;             entity.IsEnabled = product.GetRequiredPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"IsEnabled"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   52&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   53&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// Map optional custom properties.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   54&lt;/span&gt;             entity.WebId = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"WebId"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   55&lt;/span&gt;             entity.LongName = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"LongName"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   56&lt;/span&gt;             entity.LongDescription = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"LongDescription"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   57&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   58&lt;/span&gt;             &lt;span style="COLOR: green"&gt;// ...&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   59&lt;/span&gt;         }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   60&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   61&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   62&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   63&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   64&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;(Trimmed again.)&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;abstract&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;HardGoodMappingBase&lt;/span&gt;&amp;lt;TProductEntity&amp;gt; : &lt;span style="COLOR: #2b91af"&gt;ProductMappingBase&lt;/span&gt;&amp;lt;TProductEntity&amp;gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;where&lt;/span&gt; TProductEntity : &lt;span style="COLOR: #2b91af"&gt;HardGoodEntityBase&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;new&lt;/span&gt;()&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; MapBaseProperties(&lt;span style="COLOR: #2b91af"&gt;Product&lt;/span&gt; product, TProductEntity entity)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.MapBaseProperties(product, entity);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// Map custom properties specific to hard goods.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.LengthInBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"LengthInBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.WidthInBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"WidthInBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.HeightInBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"HeightInBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.LengthOutOfBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"LengthOutOfBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.WidthOutOfBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"WidthOutOfBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.HeightOutOfBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"HeightOutOfBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.WeightInBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"WeightInBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        entity.WeightOutOfBox = product.GetOptionalPropertyValue&amp;lt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;?&amp;gt;(&lt;span style="COLOR: #a31515"&gt;"WeightOutOfBox"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;WhiteGoodMapping&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;HardGoodMappingBase&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;WhiteGoodEntity&lt;/span&gt;&amp;gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;override&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; MapBaseProperties(&lt;span style="COLOR: #2b91af"&gt;Product&lt;/span&gt; product, &lt;span style="COLOR: #2b91af"&gt;WhiteGoodEntity&lt;/span&gt; entity)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;.MapBaseProperties(product, entity);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// Map custom properties specific to white goods...&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;BrownGoodMapping&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;HardGoodMappingBase&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;BrownGoodEntity&lt;/span&gt;&amp;gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SoftGoodMapping&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;ProductMappingBase&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;SoftGoodEntity&lt;/span&gt;&amp;gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;BundleMapping&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;ProductMappingBase&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;BundleEntity&lt;/span&gt;&amp;gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;At this point in the example, we've got everything we need to map products to business entities.  However, we still need to use the product's &lt;font face="Courier New"&gt;DefinitionName&lt;/font&gt; to figure out which mapping to use to map the product to its business entity, and we still need to create an instance of that mapping.  To do this, we define the factory interface for creating a mapping:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Mappings;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Factory used to create Commerce Server product mappings.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IProductMappingFactory&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets the product mapping for the specified definition name.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&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 name="definitionName"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The definition name of the product mapping that is to be&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; created.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&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;An &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="IProductMapping"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; object.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt;         &lt;span style="COLOR: #2b91af"&gt;IProductMapping&lt;/span&gt; CreateProductMapping(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; definitionName);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;We then implement the factory interface using dependency injection, using the supplied definition name to retrieve the correct implementation of &lt;font face="Courier New"&gt;IProductMapping&lt;/font&gt; from our dependency container:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Globalization;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.Unity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Mappings;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; An &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="IProductMappingFactory"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; implementation that resolves mappings using a&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; dependency injection container.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductMappingFactory&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IProductMappingFactory&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Properties&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the dependency injection container to use to resolve dependencies.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&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;para&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&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;see cref="ProductMappingFactory"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; uses the &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="IUnityContainer"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to resolve &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; mappings by name.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&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;/para&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt;         &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;[&lt;span style="COLOR: #2b91af"&gt;Dependency&lt;/span&gt;]&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt;         &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IUnityContainer&lt;/span&gt; Container { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Properties&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   31&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; IProductMappingFactory Members&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   32&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   33&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   34&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets the product mapping for the specified definition name.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   35&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   36&lt;/span&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 name="definitionName"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The definition name of the product mapping that is to be&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   37&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; created.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   38&lt;/span&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;An &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="IProductMapping"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; object.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   39&lt;/span&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;exception cref="InvalidOperationException"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;Throw if &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="IProductMapping"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   40&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; is not registered with the specified definition name in the dependency injection&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   41&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; container.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   42&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IProductMapping&lt;/span&gt; CreateProductMapping(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; definitionName)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   43&lt;/span&gt;         {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   44&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;try&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   45&lt;/span&gt;             {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   46&lt;/span&gt;                 &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; Container.Resolve&amp;lt;&lt;span style="COLOR: #2b91af"&gt;IProductMapping&lt;/span&gt;&amp;gt;(definitionName);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   47&lt;/span&gt;             }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   48&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;ResolutionFailedException&lt;/span&gt; ex)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   49&lt;/span&gt;             {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   50&lt;/span&gt;                 &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="COLOR: #2b91af"&gt;CultureInfo&lt;/span&gt;.InvariantCulture, &lt;span style="COLOR: #a31515"&gt;"Product definition name '{0}' is unknown."&lt;/span&gt;, definitionName), ex);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   51&lt;/span&gt;             }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   52&lt;/span&gt;         }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   53&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   54&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// IProductMappingFactory Members&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   55&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   56&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   57&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;(Note that the factory implementation advertises that it needs an &lt;font face="Courier New"&gt;IUnityContainer&lt;/font&gt;.  In order for the factory to do its work, the &lt;font face="Courier New"&gt;UnityContainer&lt;/font&gt; that builds up the factory must be registered as the instance of &lt;font face="Courier New"&gt;IUnityContainer&lt;/font&gt;: &lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;container = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;UnityContainer&lt;/span&gt;();&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;container.RegisterInstance&amp;lt;&lt;span style="COLOR: #2b91af"&gt;IUnityContainer&lt;/span&gt;&amp;gt;(container);&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;We usually register a container with itself as soon as it's created so we can do this sort of thing.  However, we generally only use this technique in factories.  It's easy to abuse.)&lt;/p&gt;
&lt;p&gt;We then configure our application's dependency injection framework to map the factory interface to the factory implementation, and to map the mapping interface to the various named mapping implementations:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;xml&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;version&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;1.0&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; ?&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;section&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;dependencyInjectionConfiguration&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;!--&lt;/span&gt;&lt;span style="COLOR: green"&gt; ... &lt;/span&gt;&lt;span style="COLOR: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt; &lt;span style="COLOR: blue"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&gt; &lt;span style="COLOR: blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;dependencyInjectionConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;typeAliases&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;typeAlias&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;alias&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;typeAliases&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;containers&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;container&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;types&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="COLOR: green"&gt; CatalogContextFactory, from my earlier post. &lt;/span&gt;&lt;span style="COLOR: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.ICatalogContextFactory, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mapTo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.WebTierCatalogContextFactory, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;lifetime&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="COLOR: green"&gt; Map IProductMappingFactory to ProductMappingFactory. &lt;/span&gt;&lt;span style="COLOR: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.IProductMappingFactory, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mapTo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.ProductMappingFactory, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;lifetime&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="COLOR: green"&gt; Map IProductMapping to the different mapping classes by definition name. &lt;/span&gt;&lt;span style="COLOR: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.IProductMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mapTo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.WhiteGoodMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;WhiteGood&lt;/span&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;lifetime&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   31&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.IProductMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mapTo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.BrownGoodMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;BrownGood&lt;/span&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   32&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;lifetime&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   33&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   34&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.IProductMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mapTo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.SoftGoodMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;SoftGood&lt;/span&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   35&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;lifetime&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   36&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   37&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.IProductMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mapTo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.BundleMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;Bundl&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;e&lt;/font&gt;&lt;/span&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;"&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   38&lt;/span&gt; &lt;span style="COLOR: blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;lifetime&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   39&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   40&lt;/span&gt; &lt;span style="COLOR: blue"&gt;          &amp;lt;!--&lt;/span&gt;&lt;span style="COLOR: green"&gt; ... &lt;/span&gt;&lt;span style="COLOR: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   41&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   42&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;types&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   43&lt;/span&gt; &lt;span style="COLOR: blue"&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;container&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   44&lt;/span&gt; &lt;span style="COLOR: blue"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;containers&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   45&lt;/span&gt; &lt;span style="COLOR: blue"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;dependencyInjectionConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   46&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   47&lt;/span&gt; &lt;span style="COLOR: blue"&gt;  &amp;lt;!--&lt;/span&gt;&lt;span style="COLOR: green"&gt; ... &lt;/span&gt;&lt;span style="COLOR: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   48&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   49&lt;/span&gt; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;(Our factory and our mappings are stateless and thread-safe, so we use the &lt;font face="Courier New"&gt;ContainerControlledLifetimeManager&lt;/font&gt; to make them singletons, and inject the same instance over and over again.)&lt;/p&gt;
&lt;p&gt;Finally, we with all this in place, we can write code that depends on the factory to get a mapping, and on the mapping to convert the &lt;font face="Courier New"&gt;Product&lt;/font&gt; to the corresponding business entity.  Here's an example of a product provider that uses the factories we've defined to get products from the catalog:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Catalog;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    2&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; Microsoft.Practices.Unity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    3&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Entities;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    4&lt;/span&gt; &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; MyCommerceApplication.Mappings;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    5&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    6&lt;/span&gt; &lt;span style="COLOR: blue"&gt;namespace&lt;/span&gt; MyCommerceApplication&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    7&lt;/span&gt; {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    8&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;    9&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   10&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; An &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="IProductProvider"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; implementation that gets products from the Commerce&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   11&lt;/span&gt;     &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Server catalog.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   12&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   13&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductProvider&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IProductProvider&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   14&lt;/span&gt;     {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   15&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Properties&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   16&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   17&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   18&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ICatalogContextFactory"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to use to create the catalog &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   19&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; context.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   20&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   21&lt;/span&gt;         [&lt;span style="COLOR: #2b91af"&gt;Dependency&lt;/span&gt;]&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   22&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ICatalogContextFactory&lt;/span&gt; CatalogContextFactory { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   23&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   24&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   25&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets or sets the &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductMappingFactory"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; to use to create product mappings.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   26&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   27&lt;/span&gt;         &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;[&lt;span style="COLOR: #2b91af"&gt;Dependency&lt;/span&gt;]&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   28&lt;/span&gt;         &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IProductMappingFactory&lt;/span&gt; ProductMappingFactory { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   29&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   30&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Properties&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   31&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   32&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   33&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   34&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   35&lt;/span&gt;         &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Gets the specified product from the specified catalog.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   36&lt;/span&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   37&lt;/span&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 name="catalogId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The catalog identifier.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   38&lt;/span&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 name="productId"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;The product identifier.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   39&lt;/span&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 &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;see cref="ProductEntityBase"/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt; representing the product.&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   40&lt;/span&gt;         &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; GetProduct(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; catalogId, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; productId)&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   41&lt;/span&gt;         {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   42&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;CatalogContext&lt;/span&gt; context;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   43&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;Product&lt;/span&gt; product;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   44&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;IProductMapping&lt;/span&gt; mapping;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   45&lt;/span&gt;             &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt; entity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   46&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   47&lt;/span&gt;             context = CatalogContextFactory.CreateCatalogContext(); &lt;span style="COLOR: green"&gt;// Defined in an earlier post.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   48&lt;/span&gt;             product = context.GetProduct(catalogId, productId);&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   49&lt;/span&gt;             &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;mapping = ProductMappingFactory.CreateProductMapping(product.DefinitionName);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   50&lt;/span&gt;             &lt;font style="BACKGROUND-COLOR: #ffff00"&gt;entity = mapping.Map(product);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   51&lt;/span&gt;             &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; entity;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   52&lt;/span&gt;         }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   53&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   54&lt;/span&gt; &lt;span style="COLOR: blue"&gt;        #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   55&lt;/span&gt;     }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   56&lt;/span&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;   57&lt;/span&gt; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;(In production you'd want error handling, caching, etc here.)&lt;/p&gt;
&lt;p&gt;This might seem like a lot of code, but it's relatively simple, easy to understand, and easy to test.  It also has two key benefits:&lt;/p&gt;
&lt;p&gt;1. The business logic in the original example can be placed in the appropriate business entity classes, inherited, overridden, etc.&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;abstract&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;    #region&lt;/span&gt; Methods&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: gray"&gt;///&lt;/span&gt;&lt;span style="COLOR: green"&gt; Does something.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&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;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;virtual&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; DoSomething()&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// ...&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;    #endregion&lt;/span&gt; &lt;span style="COLOR: green"&gt;// Methods&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    &lt;span style="COLOR: green"&gt;// ...&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;abstract&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;HardGoodEntityBase&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;ProductEntityBase&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
&lt;p style="MARGIN: 0px"&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;void&lt;/span&gt; DoSomething()&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    {&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;        &lt;span style="COLOR: green"&gt;// Do something different when the product is a hardgood.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;    }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;2. The code can be easily extended to support new product types.  Adding a new product type is as simple as adding a new business entity class, a new mapping class, and the necessary configuration to map the definition name to the mapping:&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;GiftCardEntity&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;HardGoodEntityBase&lt;/span&gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;GiftCardMapping&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;ProductMappingBase&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;GiftCardEntity&lt;/span&gt;&amp;gt; { &lt;span style="COLOR: green"&gt;/*...*/&lt;/span&gt; }&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.IProductMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;mapTo&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;MyCommerceApplication.Mappings.GiftCardMapping, MyCommerceApplication&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;GiftCard&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;lifetime&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;singleton&lt;/span&gt;"&lt;span style="COLOR: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;There's no need to crack open the existing code and change banks of hard-coded if/else or switch statements, as in the original example.&lt;/p&gt;
&lt;p&gt;Again, this is an extremely simple technique, but it's one I haven't seen many developers use.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Colin&lt;/p&gt;&lt;img src="http://www.jtleigh.com/blogs/colinc/aggbug/3.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Coller</dc:creator>
            <guid>http://www.jtleigh.com/blogs/colinc/archive/2009/08/23/building-product-business-entities-from-commerce-server-2007-products.aspx</guid>
            <pubDate>Sun, 23 Aug 2009 23:39:30 GMT</pubDate>
            <wfw:comment>http://www.jtleigh.com/blogs/colinc/comments/3.aspx</wfw:comment>
            <comments>http://www.jtleigh.com/blogs/colinc/archive/2009/08/23/building-product-business-entities-from-commerce-server-2007-products.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.jtleigh.com/blogs/colinc/comments/commentRss/3.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>