<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Shimmy on .NET</title><link>http://blogs.microsoft.co.il/blogs/shimmy/</link><description>Ideas and thoughts about .NET and related geeky material by Shimmy Weitzhandler</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>WebClient that supports login and cookies</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2013/06/19/webclient-that-supports-login-and-cookies.aspx</link><pubDate>Wed, 19 Jun 2013 18:10:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2178518</guid><dc:creator>Shimmy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=2178518</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=2178518</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2013/06/19/webclient-that-supports-login-and-cookies.aspx#comments</comments><description>&lt;p&gt;Hi,

Here is a simple wrapper of &lt;font face="courier new,courier"&gt;WebClient&lt;/font&gt; that has an additional method &lt;font face="courier new,courier"&gt;Login&lt;/font&gt;, to allow for it to access and download user-only data, authenticated via a login-form post.&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:10px;"&gt;&lt;span style="color:blue;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:10px;"&gt;&lt;font size="3"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;CookieAwareWebClient&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span&gt;WebClient&lt;/span&gt;
{
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Login(&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;loginPageAddress,&amp;nbsp;&lt;span&gt;NameValueCollection&lt;/span&gt;&amp;nbsp;loginData)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;CookieContainer&lt;/span&gt;&amp;nbsp;container;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;request&amp;nbsp;=&amp;nbsp;(&lt;span&gt;HttpWebRequest&lt;/span&gt;)&lt;span&gt;WebRequest&lt;/span&gt;.Create(loginPageAddress);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.Method&amp;nbsp;=&amp;nbsp;&lt;span&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.ContentType&amp;nbsp;=&amp;nbsp;&lt;span&gt;&amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;buffer&amp;nbsp;=&amp;nbsp;&lt;span&gt;Encoding&lt;/span&gt;.ASCII.GetBytes(loginData.ToString());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.ContentLength&amp;nbsp;=&amp;nbsp;buffer.Length;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;requestStream&amp;nbsp;=&amp;nbsp;request.GetRequestStream();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestStream.Write(buffer,&amp;nbsp;0,&amp;nbsp;buffer.Length);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestStream.Close();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container&amp;nbsp;=&amp;nbsp;request.CookieContainer&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;CookieContainer&lt;/span&gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;response&amp;nbsp;=&amp;nbsp;request.GetResponse();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response.Close();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CookieContainer&amp;nbsp;=&amp;nbsp;container;
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;CookieAwareWebClient(&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;loginPageAddress,&amp;nbsp;&lt;span&gt;NameValueCollection&lt;/span&gt;&amp;nbsp;loginData)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Login(loginPageAddress,&amp;nbsp;loginData);
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;CookieAwareWebClient(&lt;span&gt;CookieContainer&lt;/span&gt;&amp;nbsp;container)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CookieContainer&amp;nbsp;=&amp;nbsp;container;
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;CookieAwareWebClient()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;(&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;CookieContainer&lt;/span&gt;())
&amp;nbsp;&amp;nbsp;{&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;CookieContainer&lt;/span&gt;&amp;nbsp;CookieContainer&amp;nbsp;{&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span&gt;WebRequest&lt;/span&gt;&amp;nbsp;GetWebRequest(&lt;span&gt;Uri&lt;/span&gt;&amp;nbsp;address)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;request&amp;nbsp;=&amp;nbsp;(&lt;span&gt;HttpWebRequest&lt;/span&gt;)&lt;span style="color:blue;"&gt;base&lt;/span&gt;.GetWebRequest(address);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.CookieContainer&amp;nbsp;=&amp;nbsp;CookieContainer;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;request;
&amp;nbsp;&amp;nbsp;}
}&lt;/font&gt;
&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;The &lt;font&gt;&lt;strong&gt;usage&lt;/strong&gt;&lt;/font&gt; is simple, call the Login method, and the login cookie will be set internally so the upcoming calls are authenticated:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:10px;"&gt;&lt;font size="3"&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Main()
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;loginPage&amp;nbsp;=&amp;nbsp;&lt;span&gt;&amp;quot;www.site.com/login&amp;quot;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;loginData&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;NameValueCollection&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;span&gt;&amp;quot;username&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;&amp;quot;shimmy&amp;quot;&lt;/span&gt;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;span&gt;&amp;quot;password&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;&amp;quot;mypassword&amp;quot;&lt;/span&gt;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;span&gt;&amp;quot;rememberme&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;client&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;CookieAwareWebClient&lt;/span&gt;(loginPage,&amp;nbsp;loginData);
}&lt;/font&gt;
&lt;/pre&gt;&lt;p&gt;The &lt;font face="courier new,courier"&gt;Login&lt;/font&gt; method can be called after initialization as well.&lt;br /&gt;The upcoming requests and&amp;nbsp;downloads of the &lt;font face="courier new,courier"&gt;WebClient&lt;/font&gt; should all be authenticated.&lt;/p&gt;&lt;p&gt;Hope this helps,&lt;br /&gt;Shimmy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2178518" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/login/default.aspx">login</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/webclient/default.aspx">webclient</category></item><item><title>Entity-Framework Code First Designer with Database Initialization in few simple steps!</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/05/11/entity-framework-code-first-designer-with-database-initialization-in-few-simple-steps.aspx</link><pubDate>Fri, 11 May 2012 10:49:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1088932</guid><dc:creator>Shimmy</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=1088932</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=1088932</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/05/11/entity-framework-code-first-designer-with-database-initialization-in-few-simple-steps.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=entity%20framework&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;

&lt;p&gt;I find it very frustrating that I cannot use the entity model designer to generate code-first DbContext &amp;amp; entities that retains all the aspects of code-first including database initialization.&lt;/p&gt;
&lt;p&gt;Here are a &lt;font&gt;set of instructions&lt;/font&gt; that can easily help you to achieve true code-first using the EDM designer, and allowing initialization of database (database initialization is not supported in model-first, it only allows generation of database scripts that has to be generated on the server).&lt;/p&gt;
&lt;p&gt;This is very useful in small projects where you don&amp;#39;t want to mess with the database, and you rather it being generated automatically.&lt;/p&gt;
&lt;p&gt;In my example I chose to use SQL Compact Edition, but you can use SQL Express or other as well.&lt;/p&gt;&lt;b style="text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;orphans:2;widows:2;font-size-adjust:none;font-stretch:normal;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" id="internal-source-marker_0.4944236234296113"&gt;
&lt;ol style="margin-top:0pt;margin-bottom:0pt;"&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Right-click the project and select “Add New Item”&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Select ADO.NET Entity Data Model, and rename the class if necessary&lt;br /&gt;&lt;img border="0" alt="" src="http://goo.gl/cFZ2s" width="594" height="454" /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Choose “Empty Model” when asked&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;RIght-click the designer surface and click “Add Code Generation Item...”&lt;br /&gt;&lt;img border="0" alt="" src="http://goo.gl/dLoaq" width="417" height="442" /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;From the left menu select “Online Templates” then under category “Database” choose EF 4.x DbContext Generator for C# (or different lang.)&lt;br /&gt;&lt;img border="0" alt="" src="http://goo.gl/yjxKh" width="967" height="672" /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Two new template files (*.tt) were generated to the project, open the Context.Context.tt file (the first ‘Context’ should be your model name)&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Search for the constructor template, it calls the base constructor:&lt;br /&gt;&lt;font size="1" face="Consolas"&gt;&lt;font size="1" face="Consolas"&gt;&lt;font size="2"&gt;: &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;base&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&amp;quot;name=&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font face="Consolas"&gt;&amp;lt;#=container.Name#&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1" face="Consolas"&gt;&lt;font size="1" face="Consolas"&gt;)&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;Remove the &lt;/span&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:bold;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;&lt;font color="#800000" size="2" face="Consolas"&gt;name=&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt; from it so it remains &lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;font face="Consolas"&gt;: &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;base&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font face="Consolas"&gt;&amp;lt;#=container.Name#&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&lt;font color="#800000" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font face="Consolas"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Erease or comment the OnModelCreating method&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Add the following lines to your bootstrapper or App_Startup or any point where the application initializes:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;font face="courier new,courier"&gt;&lt;font size="2"&gt;&lt;span&gt;AppDomain&lt;/span&gt;.&lt;span&gt;CurrentDomain&lt;/span&gt;.&lt;span&gt;SetData&lt;/span&gt;(&lt;span&gt;&amp;quot;DataDirectory&amp;quot;&lt;/span&gt;, &lt;span&gt;Environment&lt;/span&gt;.&lt;span&gt;CurrentDirectory&lt;/span&gt;);
&lt;span&gt;Database&lt;/span&gt;.&lt;span&gt;DefaultConnectionFactory&lt;/span&gt; = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;SqlCeConnectionFactory&lt;/span&gt;(&lt;span&gt;&amp;quot;System.Data.SqlServerCe.4.0&amp;quot;&lt;/span&gt;);
&lt;span&gt;Database&lt;/span&gt;.&lt;span&gt;SetInitializer&lt;/span&gt;(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;DropCreateDatabaseIfModelChanges&lt;/span&gt;&amp;lt;&lt;span&gt;ContextContainer&lt;/span&gt;&amp;gt;());&lt;/font&gt;&lt;/font&gt;
&lt;/pre&gt;&lt;/span&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;div style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;If it&amp;#39;s not a web application you&amp;#39;re dealing with, you will need to set the &lt;font face="courier new,courier"&gt;DataDirectory&lt;/font&gt; variable of the generated connection string, see the first line above.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;The second line sets the default connection factory which is the pipe Entity-Framework uses to generate a connection string (and hence a database), you can use either &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.sqlceconnectionfactory(v=VS.103).aspx"&gt;&lt;font face="courier new,courier"&gt;SqlCeConnectionFactory&lt;/font&gt;&lt;/a&gt; like in the above example, or &lt;font face="courier new,courier"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.sqlconnectionfactory(v=VS.103).aspx"&gt;SqlConnectionFactory&lt;/a&gt;&lt;/font&gt; and you can even create your own connection factory by implementing &lt;font face="courier new,courier"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.idbconnectionfactory(v=vs.103).aspx"&gt;IDbConnectionFactory&lt;/a&gt;&lt;/font&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;You can change the third line by setting the DatabaseInitializer to your own by deriving from the class above (you can use any class that implement &lt;font face="courier new,courier"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg696323(v=VS.103).aspx"&gt;IDatabaseInitializer&lt;/a&gt;&lt;/font&gt;), and override the &lt;a href="http://msdn.microsoft.com/en-us/library/gg679410(v=VS.103).aspx"&gt;&lt;font face="courier new,courier"&gt;Seed&lt;/font&gt;&lt;/a&gt; method, which allows you setting initial database values like deafult username/password etc.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Here is the &lt;font&gt;sample&lt;/font&gt; project&amp;#39;s execution, it will automatically generate an sdf database file that will be filled with data with no hassle of servers and all that. In fact you don&amp;#39;t even care what the database schema looks like.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span&gt;Program&lt;/span&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;void&lt;/span&gt; &lt;span&gt;Main&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] &lt;span&gt;args&lt;/span&gt;)
  {
    &lt;span&gt;AppDomain&lt;/span&gt;.&lt;span&gt;CurrentDomain&lt;/span&gt;.&lt;span&gt;SetData&lt;/span&gt;(&lt;span&gt;&amp;quot;DataDirectory&amp;quot;&lt;/span&gt;, &lt;span&gt;Environment&lt;/span&gt;.&lt;span&gt;CurrentDirectory&lt;/span&gt;);
    &lt;span&gt;Database&lt;/span&gt;.&lt;span&gt;DefaultConnectionFactory&lt;/span&gt; = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;SqlCeConnectionFactory&lt;/span&gt;(&lt;span&gt;&amp;quot;System.Data.SqlServerCe.4.0&amp;quot;&lt;/span&gt;);
    &lt;span&gt;Database&lt;/span&gt;.&lt;span&gt;SetInitializer&lt;/span&gt;(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;DropCreateDatabaseIfModelChanges&lt;/span&gt;&amp;lt;&lt;span&gt;ContextContainer&lt;/span&gt;&amp;gt;());
 
    &lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color:blue;"&gt;var&lt;/span&gt; &lt;span&gt;context&lt;/span&gt; = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;ContextContainer&lt;/span&gt;())
    {
      &lt;span&gt;context&lt;/span&gt;.&lt;span&gt;Contacts&lt;/span&gt;.&lt;span&gt;Add&lt;/span&gt;(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;Contact&lt;/span&gt; { &lt;span&gt;FirstName&lt;/span&gt; = &lt;span&gt;&amp;quot;asdf&amp;quot;&lt;/span&gt; });
      &lt;span&gt;context&lt;/span&gt;.&lt;span&gt;SaveChanges&lt;/span&gt;();
    }
  }
}
&lt;/pre&gt;&lt;/span&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;As you can see, it generated the database file to the project&amp;#39;s folder, no database or schema mentioned at all.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;&lt;img border="0" alt="" src="http://goo.gl/j6Kkz" width="1" height="1" /&gt;&lt;img border="0" alt="" src="http://goo.gl/j6Kkz" width="1015" height="733" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Hope this helps, please comment on for questions.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;Shimmy&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;list-style-type:decimal;background-color:transparent;"&gt;&lt;span style="font-family:Arial;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;background-color:transparent;"&gt;After following the directions above, you can use the database&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/b&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1088932" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DbContext/default.aspx">DbContext</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Entity+Framework+4.1/default.aspx">Entity Framework 4.1</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/SQLCE/default.aspx">SQLCE</category></item><item><title>Get a list of all countries in C#</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/05/11/get-a-list-of-all-countries-in-c.aspx</link><pubDate>Fri, 11 May 2012 10:15:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1088914</guid><dc:creator>Shimmy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=1088914</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=1088914</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/05/11/get-a-list-of-all-countries-in-c.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=c#&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;I&amp;#39;m sharing it here mostly for myself, but I hope someone else would also be able to enjoy it once...&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:gray;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span&gt;Country&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;span&gt;GetCountries&lt;/span&gt;()
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span&gt;ri&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;in&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span&gt;ci&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span&gt;CultureInfo&lt;/span&gt;.&lt;span&gt;GetCultures&lt;/span&gt;(&lt;span style="color:purple;"&gt;CultureTypes&lt;/span&gt;.&lt;span&gt;SpecificCultures&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;RegionInfo&lt;/span&gt;(&lt;span&gt;ci&lt;/span&gt;.&lt;span&gt;LCID&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;group&lt;/span&gt;&amp;nbsp;&lt;span&gt;ri&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;by&lt;/span&gt;&amp;nbsp;&lt;span&gt;ri&lt;/span&gt;.&lt;span&gt;TwoLetterISORegionName&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span&gt;g&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//where&amp;nbsp;g.Key.Length&amp;nbsp;==&amp;nbsp;2&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;Country&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;CountryId&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;g&lt;/span&gt;.&lt;span&gt;Key&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Title&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;g&lt;/span&gt;.&lt;span&gt;First&lt;/span&gt;().&lt;span&gt;DisplayName&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
}
&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;Country&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;CountryId&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;Title&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
}&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1088914" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category></item><item><title>No ICloneable in WinRT?</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/03/30/no-icloneable-in-winrt.aspx</link><pubDate>Fri, 30 Mar 2012 05:57:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1048419</guid><dc:creator>Shimmy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=1048419</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=1048419</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/03/30/no-icloneable-in-winrt.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="60" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=13&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=winrt&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="468" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/br230302(v=vs.110).aspx#general"&gt;Looks&lt;/a&gt; like the &lt;a href="http://msdn.microsoft.com/en-us/library/system.icloneable.aspx"&gt;&lt;font face="courier new,courier"&gt;ICloneable&lt;/font&gt;&lt;/a&gt; interface has&amp;nbsp;not been included&amp;nbsp;in WinRT.&lt;/p&gt;
&lt;p&gt;I could guess it&amp;#39;s because of the uncertainty of whether the implentation is a shallow or a deep clone.&lt;/p&gt;
&lt;p&gt;Would like to hear what you think about it.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1048419" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/ICloneable/default.aspx">ICloneable</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/WinRT/default.aspx">WinRT</category></item><item><title>Get Jewish date string</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/03/04/get-jewish-date-string.aspx</link><pubDate>Sun, 04 Mar 2012 20:24:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1026066</guid><dc:creator>Shimmy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=1026066</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=1026066</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/03/04/get-jewish-date-string.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=c#,%20.net&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Globalization&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;DateTimeExtensions&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;HebrewCultureName&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;&amp;quot;he-IL&amp;quot;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;readonly&lt;/span&gt;&amp;nbsp;&lt;span&gt;CultureInfo&lt;/span&gt;&amp;nbsp;&lt;span&gt;HebrewCulture&lt;/span&gt;&amp;nbsp;=
&lt;span style="color:blue;"&gt;#if&lt;/span&gt;&amp;nbsp;SILVERLIGHT
&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;CultureInfo&lt;/span&gt;(&lt;span&gt;HebrewCultureName&lt;/span&gt;);
&lt;span style="color:blue;"&gt;#else&lt;/span&gt;
&lt;span style="color:gray;"&gt;&amp;nbsp;CultureInfo.CreateSpecificCulture(HebrewCultureName);&lt;/span&gt;
&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Converts&amp;nbsp;a&amp;nbsp;gregorian&amp;nbsp;date&amp;nbsp;to&amp;nbsp;its&amp;nbsp;hebrew&amp;nbsp;date&amp;nbsp;string&amp;nbsp;representation,&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;using&amp;nbsp;custom&amp;nbsp;DateTime&amp;nbsp;format&amp;nbsp;string.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;DateTime&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;value&amp;nbsp;to&amp;nbsp;convert.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;format&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;A&amp;nbsp;standard&amp;nbsp;or&amp;nbsp;custom&amp;nbsp;date&amp;nbsp;and&amp;nbsp;time&amp;nbsp;format&amp;nbsp;string.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;ToJewishDateString&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:magenta;"&gt;DateTime&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;format&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;HebrewCulture&lt;/span&gt;.&lt;span&gt;DateTimeFormat&lt;/span&gt;.&lt;span&gt;Calendar&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;HebrewCalendar&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;.&lt;span&gt;ToString&lt;/span&gt;(&lt;span&gt;format&lt;/span&gt;,&amp;nbsp;&lt;span&gt;HebrewCulture&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Converts&amp;nbsp;a&amp;nbsp;gregorian&amp;nbsp;date&amp;nbsp;to&amp;nbsp;its&amp;nbsp;hebrew&amp;nbsp;date&amp;nbsp;string&amp;nbsp;representation,&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;using&amp;nbsp;DateTime&amp;nbsp;format&amp;nbsp;options.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;DateTime&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;value&amp;nbsp;to&amp;nbsp;convert.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;dayOfWeek&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Specifies&amp;nbsp;whether&amp;nbsp;the&amp;nbsp;return&amp;nbsp;string&amp;nbsp;should&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;include&amp;nbsp;the&amp;nbsp;day&amp;nbsp;of&amp;nbsp;week.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;ToJewishDateString&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:magenta;"&gt;DateTime&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;dayOfWeek&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;format&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;dayOfWeek&lt;/span&gt;&amp;nbsp;?&amp;nbsp;&lt;span&gt;&amp;quot;D&amp;quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span&gt;&amp;quot;d&amp;quot;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;.&lt;span&gt;ToJewishDateString&lt;/span&gt;(&lt;span&gt;format&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1026066" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Extension+Methods/default.aspx">Extension Methods</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Jewish/default.aspx">Jewish</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Date/default.aspx">Date</category></item><item><title>Determine if char is Hebrew (2)</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/02/03/determine-if-char-is-hebrew-2.aspx</link><pubDate>Fri, 03 Feb 2012 07:52:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1005333</guid><dc:creator>Shimmy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=1005333</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=1005333</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/02/03/determine-if-char-is-hebrew-2.aspx#comments</comments><description>&lt;p&gt;&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=c#,%20.net&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;/p&gt;&lt;p&gt;About 2 weeks ago &lt;a href="http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/19/Determine-if-char-is-Hebrew.aspx"&gt;I posted&lt;/a&gt; a function that determines whether a given char is hebrew:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:green;"&gt;//&amp;nbsp;avoid&amp;nbsp;unicode&amp;nbsp;chars&amp;nbsp;in&amp;nbsp;code&lt;/span&gt;
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;FirstHebChar&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:blue;"&gt;char&lt;/span&gt;)1488;&amp;nbsp;&lt;span style="color:green;"&gt;//א&lt;/span&gt;
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;LastHebChar&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:blue;"&gt;char&lt;/span&gt;)1514;&amp;nbsp;&lt;span style="color:green;"&gt;//ת&lt;/span&gt;
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;IsHebrew&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;)
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;gt;=&amp;nbsp;&lt;span&gt;FirstHebChar&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span&gt;LastHebChar&lt;/span&gt;;
}
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://blog.slaks.net/"&gt;Schabse Laks&lt;/a&gt; &lt;a href="http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/19/Determine-if-char-is-Hebrew.aspx#1002894"&gt;commented&lt;/a&gt; that it won&amp;#39;t include punctuation marks / vowels etc.&lt;/p&gt;
&lt;p&gt;This week I needed a more sophisticated function that does the job, so I ended up with the extension methods bellow (&lt;a href="http://pastebin.com/raw.php?i=B7A7QHZu"&gt;&lt;font&gt;view raw&amp;nbsp;code here&lt;/font&gt;&lt;/a&gt;).&lt;br /&gt;Note, that I needed the function for a one-time-use application so I didn&amp;#39;t optimize the code well enough, any improvements will be welcomed as always, and especially now.&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Linq&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Collections&lt;/span&gt;.&lt;span&gt;Generic&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;HebrewCharsExtensions&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;IsHebrew&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;IsHebrew&lt;/span&gt;(&lt;span&gt;c&lt;/span&gt;,&amp;nbsp;&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;All&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;IsHebrew&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;,&amp;nbsp;&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;&amp;nbsp;&lt;span&gt;charTypes&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;kv&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span&gt;Map&lt;/span&gt;.&lt;span&gt;Where&lt;/span&gt;(&lt;span&gt;ct&lt;/span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;span&gt;charTypes&lt;/span&gt;.&lt;span&gt;HasFlag&lt;/span&gt;(&lt;span&gt;ct&lt;/span&gt;.&lt;span&gt;Key&lt;/span&gt;)))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;kv&lt;/span&gt;.&lt;span&gt;Value&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;.&lt;span&gt;GetUpperBound&lt;/span&gt;(0);&amp;nbsp;&lt;span&gt;i&lt;/span&gt;++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;gt;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;[&lt;span&gt;i&lt;/span&gt;,&amp;nbsp;0]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;[&lt;span&gt;i&lt;/span&gt;,&amp;nbsp;1])&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;true&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;false&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;&amp;nbsp;&lt;span&gt;GetHebrewCharType&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;kv&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span&gt;Map&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;kv&lt;/span&gt;.&lt;span&gt;Value&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;.&lt;span&gt;GetUpperBound&lt;/span&gt;(0);&amp;nbsp;&lt;span&gt;i&lt;/span&gt;++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;gt;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;[&lt;span&gt;i&lt;/span&gt;,&amp;nbsp;0]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;[&lt;span&gt;i&lt;/span&gt;,&amp;nbsp;1])&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;kv&lt;/span&gt;.&lt;span&gt;Key&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;None&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:gray;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;span&gt;GetHebChars&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;GetHebChars&lt;/span&gt;(&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;All&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:gray;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;span&gt;GetHebChars&lt;/span&gt;(&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;&amp;nbsp;&lt;span&gt;charTypes&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;kv&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span&gt;Map&lt;/span&gt;.&lt;span&gt;Where&lt;/span&gt;(&lt;span&gt;ct&lt;/span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;span&gt;charTypes&lt;/span&gt;.&lt;span&gt;HasFlag&lt;/span&gt;(&lt;span&gt;ct&lt;/span&gt;.&lt;span&gt;Key&lt;/span&gt;)))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;kv&lt;/span&gt;.&lt;span&gt;Value&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;.&lt;span&gt;GetUpperBound&lt;/span&gt;(0);&amp;nbsp;&lt;span&gt;i&lt;/span&gt;++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;start&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;[&lt;span&gt;i&lt;/span&gt;,&amp;nbsp;0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;end&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;locMap&lt;/span&gt;[&lt;span&gt;i&lt;/span&gt;,&amp;nbsp;1];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;ch&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span&gt;Enumerable&lt;/span&gt;.&lt;span&gt;Range&lt;/span&gt;(&lt;span&gt;start&lt;/span&gt;,&amp;nbsp;&lt;span&gt;end&lt;/span&gt;&amp;nbsp;-&amp;nbsp;&lt;span&gt;start&lt;/span&gt;&amp;nbsp;+&amp;nbsp;1))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;yield&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;char&lt;/span&gt;)&lt;span&gt;ch&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;readonly&lt;/span&gt;&amp;nbsp;&lt;span&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[,]&amp;gt;&amp;nbsp;&lt;span&gt;Map&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[,]&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;Letter&lt;/span&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[,]&amp;nbsp;{&amp;nbsp;{&amp;nbsp;0x05d0,&amp;nbsp;0x05ea&amp;nbsp;}&amp;nbsp;}&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;Vowel&lt;/span&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[,]&amp;nbsp;{&amp;nbsp;{&amp;nbsp;0x05b0,&amp;nbsp;0x05b9&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0x05bb,&amp;nbsp;0x05c4&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb2a,&amp;nbsp;0xfb36&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb38,&amp;nbsp;0xfb3c&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb3e,&amp;nbsp;0xfb3e&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb40,&amp;nbsp;0xfb41&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb43,&amp;nbsp;0xfb44&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb46,&amp;nbsp;0xfb4e}&amp;nbsp;}&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;Biblical&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[,]&amp;nbsp;{&amp;nbsp;{&amp;nbsp;0x0591,&amp;nbsp;0x05a1&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0x05a3,&amp;nbsp;0x05af&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb1e,&amp;nbsp;0xfb1e&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb4f,&amp;nbsp;0xfb4f&amp;nbsp;}&amp;nbsp;}&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;Yiddish&lt;/span&gt;,&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[,]&amp;nbsp;{&amp;nbsp;{&amp;nbsp;0x05f0,&amp;nbsp;0x05f2&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb1f,&amp;nbsp;0xfb1f&amp;nbsp;}&amp;nbsp;}&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;.&lt;span&gt;Special&lt;/span&gt;,&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[,]&amp;nbsp;{&amp;nbsp;{&amp;nbsp;0x05f3,&amp;nbsp;0x05f4&amp;nbsp;},&amp;nbsp;{&amp;nbsp;0xfb20,&amp;nbsp;0xfb29&amp;nbsp;}&amp;nbsp;}&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
 
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;[&lt;span&gt;Flags&lt;/span&gt;]
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;enum&lt;/span&gt;&amp;nbsp;&lt;span style="color:purple;"&gt;HebrewCharTypes&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Not&amp;nbsp;a&amp;nbsp;Hebrew&amp;nbsp;character.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;None&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Alef&amp;nbsp;to&amp;nbsp;Tav.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Letter&lt;/span&gt;&amp;nbsp;=&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Qamats&amp;nbsp;to&amp;nbsp;Hataf&amp;nbsp;Segol.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Vowel&lt;/span&gt;&amp;nbsp;=&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Kadma&amp;nbsp;Munah&amp;nbsp;Pashta&amp;nbsp;etc.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Biblical&lt;/span&gt;&amp;nbsp;=&amp;nbsp;4,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Double&amp;nbsp;Yod&amp;nbsp;etc.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Yiddish&lt;/span&gt;&amp;nbsp;=&amp;nbsp;8,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Other&amp;nbsp;special&amp;nbsp;characters&amp;nbsp;(wide&amp;nbsp;chars&amp;nbsp;and&amp;nbsp;more).&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Special&lt;/span&gt;&amp;nbsp;=&amp;nbsp;16,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;All&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;Letter&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span&gt;Vowel&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span&gt;Biblical&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span&gt;Yiddish&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span&gt;Special&lt;/span&gt;
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1005333" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Text/default.aspx">Text</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/string/default.aspx">string</category></item><item><title>LeakEvent → WeakEvent</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/02/01/weak-event-handler-for-silverlight.aspx</link><pubDate>Wed, 01 Feb 2012 20:53:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1004251</guid><dc:creator>Shimmy</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=1004251</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=1004251</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/02/01/weak-event-handler-for-silverlight.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=silverlight%205&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;


&lt;p&gt;I&amp;#39;m sure not any Silverlight&amp;nbsp;developer is aware of the fact that when one subscribes to an event, a strong&amp;nbsp;reference to the handler class&amp;nbsp;(&amp;#39;target&amp;#39;)&amp;nbsp;is attached to the event source (&amp;#39;source&amp;#39;), hence, if the source object life-cycle is longer than the target, memory is leaked, becuase when you don&amp;#39;t need the target anymore and all its references are removed, there is still one reference to it by that event handler in the source, and thus, won&amp;#39;t get collected by GC.&lt;/p&gt;
&lt;p&gt;A &lt;a href="http://en.wikipedia.org/wiki/Strong_reference"&gt;strong reference&lt;/a&gt; is a normal &lt;a title="Reference (computer science)" href="http://en.wikipedia.org/wiki/Reference_(computer_science)"&gt;&lt;font color="#0645ad"&gt;reference&lt;/font&gt;&lt;/a&gt; that protects the referred object from collection by a &lt;a title="Garbage collection (computer science)" href="http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)"&gt;&lt;font color="#0645ad"&gt;garbage collector&lt;/font&gt;&lt;/a&gt;. The term is used to distinguish the reference from &lt;a title="Weak reference" href="http://en.wikipedia.org/wiki/Weak_reference"&gt;&lt;font color="#0645ad"&gt;weak references&lt;/font&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;re using Silverlight you&amp;nbsp;must have encountered this scenario before.&lt;br /&gt;Here is a typical scenaio: you&amp;nbsp;have long running object publishing events and a temporary view model that handles its events, once you subscribe to an event of the long-running object, you may never get rid of the view-model until that object itself is GCed.&lt;br /&gt;Say you have a LoginViewModel that subscribes to &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.domainservices.client.applicationservices.authenticationservice.loggedin(VS.91).aspx"&gt;&lt;font face="courier new,courier"&gt;WebContext.Authentication.LoggedIn&lt;/font&gt;&lt;/a&gt;&amp;nbsp;event (&lt;a href="http://www.silverlight.net/learn/advanced-techniques/wcf-ria-services"&gt;WCF&amp;nbsp;RIA&lt;/a&gt;)&amp;nbsp;within your view model, when your view-model is supposed to go out-of-scope, it won&amp;#39;t be eligible for GC since the LoggedIn event source holds a reference to it! This is just an example that its impact might be&amp;nbsp;low considering&amp;nbsp;the LoginViewModel and its resources (no memory leak is ever considerable at all but anyway), if we&amp;#39;re talking about&amp;nbsp;a utility that holds heavyweight info and subscribes to events published by a long-living object&amp;nbsp;without letting the GC collecting itself (by weakly subscribing to that event)&amp;nbsp;is a&amp;nbsp;terrible memory leak.&lt;/p&gt;
&lt;p&gt;To solve this problem, Microsoft provides the &lt;font face="courier new,courier"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.weakreference.aspx"&gt;WeakReference&lt;/a&gt;&lt;/font&gt; wrapper which is used as a proxy to an object, and references an object while still allowing that object to be reclaimed by garbage collection.&lt;/p&gt;
&lt;p&gt;Unlike in Silverlight, other platforms (i.e. WPF)&amp;nbsp;have out-the-box support for &lt;a href="http://msdn.microsoft.com/en-us/library/aa970850.aspx"&gt;weak events&lt;/a&gt;, however, those helpers are not shipped with Silverlight.&lt;br /&gt;Another issue is, invoking a private&amp;nbsp;method by reflection&amp;nbsp;is restricted in&amp;nbsp;Silverlight, and that&amp;#39;s why the&amp;nbsp;provided &lt;font face="courier new,courier"&gt;WeakHandler&lt;/font&gt; class&amp;nbsp;bellow doesn&amp;#39;t take a method for self maintenance.&lt;/p&gt;
&lt;p&gt;I won&amp;#39;t repeat the basics, I will just refer you to an &lt;a href="http://blogs.msdn.com/b/greg_schechter/archive/2004/05/27/143605.aspx"&gt;awsome article&lt;/a&gt; written long time ago, that goes in detail of this issue, and actually influenced my code as well.&lt;br /&gt;I expanded the code in the article to overcome the private method invoking restriction, so the &amp;#39;target&amp;#39; has to implement a handler method, then all you have to do is remove the handle at destruction (will reach destructor since we use a weak-reference that will allow GCing the target.&lt;/p&gt;
&lt;p&gt;I named it WeakHandler to keep it simple,&amp;nbsp;here is what the class looks like (usage bellow):&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;
{
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Encapsulates&amp;nbsp;an&amp;nbsp;event&amp;nbsp;publisher&amp;nbsp;and&amp;nbsp;a&amp;nbsp;handler&amp;nbsp;while&amp;nbsp;still&amp;nbsp;allowing&amp;nbsp;the&amp;nbsp;objects&amp;nbsp;to&amp;nbsp;be&amp;nbsp;garbage&amp;nbsp;collected.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;typeparam&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;TTarget&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;class&amp;nbsp;that&amp;nbsp;declares&amp;nbsp;the&amp;nbsp;handler.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;typeparam&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;TEventArgs&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;type&amp;nbsp;of&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;EventArgs&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;this&amp;nbsp;event&amp;nbsp;handler&amp;nbsp;accepts&amp;nbsp;as&amp;nbsp;an&amp;nbsp;argument.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font size="3"&gt;&lt;strong&gt;WeakHandler&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;TTarget&lt;/span&gt;,&amp;nbsp;&lt;span&gt;TEventArgs&lt;/span&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;where&lt;/span&gt;&amp;nbsp;TTarget&amp;nbsp;:&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;,&amp;nbsp;&lt;span style="color:gray;"&gt;IWeakHandler&lt;/span&gt;&amp;lt;TEventArgs&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;where&lt;/span&gt;&amp;nbsp;TEventArgs&amp;nbsp;:&amp;nbsp;&lt;span&gt;EventArgs&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span&gt;WeakReference&lt;/span&gt;&amp;nbsp;&lt;span&gt;_target&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Initializes&amp;nbsp;a&amp;nbsp;new&amp;nbsp;object&amp;nbsp;of&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;WeakHandler&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;target&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;object&amp;nbsp;that&amp;nbsp;handles&amp;nbsp;the&amp;nbsp;event.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;WeakHandler&lt;/span&gt;(TTarget&amp;nbsp;&lt;span&gt;target&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;target&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentNullException&lt;/span&gt;(&lt;span&gt;&amp;quot;target&amp;quot;&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;_target&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;WeakReference&lt;/span&gt;(&lt;span&gt;target&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;The&amp;nbsp;method&amp;nbsp;that&amp;nbsp;should&amp;nbsp;actually&amp;nbsp;be&amp;nbsp;subscribed&amp;nbsp;to&amp;nbsp;the&amp;nbsp;event.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;sender&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;object&amp;nbsp;that&amp;nbsp;publishes&amp;nbsp;the&amp;nbsp;event.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;e&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;EventArgs&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;to&amp;nbsp;be&amp;nbsp;passed&amp;nbsp;to&amp;nbsp;the&amp;nbsp;event&amp;nbsp;handler.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;OnEventRaised&lt;/span&gt;(&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;sender&lt;/span&gt;,&amp;nbsp;TEventArgs&amp;nbsp;&lt;span&gt;e&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;Target&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Target&lt;/span&gt;.&lt;span&gt;OnEventRaised&lt;/span&gt;(&lt;span&gt;sender&lt;/span&gt;,&amp;nbsp;&lt;span&gt;e&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;The&amp;nbsp;object&amp;nbsp;that&amp;nbsp;handles&amp;nbsp;the&amp;nbsp;event.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;TTarget&amp;nbsp;&lt;span&gt;Target&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;(TTarget)&lt;span&gt;_target&lt;/span&gt;.&lt;span&gt;Target&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//An&amp;nbsp;empty&amp;nbsp;destructor&amp;nbsp;costs&amp;nbsp;performance (see this for detail: &lt;a title="Note: Avoid empty destructors" href="http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx"&gt;http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx&lt;/a&gt;)!&lt;/span&gt;
&lt;span style="color:blue;"&gt;#if&lt;/span&gt;&amp;nbsp;DEBUG
    &lt;font color="#008000"&gt;//Will Validate our test:&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;~&lt;span&gt;WeakHandler&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;font color="#008000"&gt;&lt;br /&gt;&lt;/font&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Diagnostics.&lt;/span&gt;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;WeakHandler&amp;nbsp;finalized.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Defines&amp;nbsp;an&amp;nbsp;event&amp;nbsp;handler&amp;nbsp;of&amp;nbsp;the&amp;nbsp;specified&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;EventArgs&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;.&amp;nbsp;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;typeparam&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;TEventArgs&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;EventArgs&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;type&amp;nbsp;of&amp;nbsp;this&amp;nbsp;event.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color:gray;"&gt;&lt;font size="3"&gt;&lt;strong&gt;IWeakHandler&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;TEventArgs&lt;/span&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;where&lt;/span&gt;&amp;nbsp;TEventArgs&amp;nbsp;:&amp;nbsp;&lt;span&gt;EventArgs&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;The&amp;nbsp;method&amp;nbsp;to&amp;nbsp;be&amp;nbsp;raised&amp;nbsp;when&amp;nbsp;the&amp;nbsp;event&amp;nbsp;is&amp;nbsp;fired.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;sender&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;object&amp;nbsp;that&amp;nbsp;raised&amp;nbsp;the&amp;nbsp;event.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;e&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;EventArgs&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;of&amp;nbsp;the&amp;nbsp;event.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;OnEventRaised&lt;/span&gt;(&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;sender&lt;/span&gt;,&amp;nbsp;TEventArgs&amp;nbsp;&lt;span&gt;e&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;}
&lt;/pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Usage:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;partial&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;strong&gt;&lt;font size="3"&gt;App&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span&gt;Application&lt;/span&gt;
{
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;App&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;InitializeComponent&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Startup&lt;/span&gt;&amp;nbsp;+=&amp;nbsp;&lt;span&gt;Current_Startup&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;Current_Startup&lt;/span&gt;(&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;sender&lt;/span&gt;,&amp;nbsp;&lt;span&gt;StartupEventArgs&lt;/span&gt;&amp;nbsp;&lt;span&gt;e&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Source&lt;/span&gt;&amp;nbsp;&lt;span&gt;source&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;Source&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Target&lt;/span&gt;&amp;nbsp;&lt;span&gt;target&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;Target&lt;/span&gt;(&lt;span&gt;source&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;source&lt;/span&gt;.&lt;span&gt;RaiseEvent&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;target&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Collecting&amp;nbsp;Target.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;GC&lt;/span&gt;.&lt;span&gt;Collect&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;GC&lt;/span&gt;.&lt;span&gt;WaitForPendingFinalizers&lt;/span&gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Recollecting&amp;nbsp;to&amp;nbsp;clean&amp;nbsp;weak&amp;nbsp;handler.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;GC&lt;/span&gt;.&lt;span&gt;Collect&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;GC&lt;/span&gt;.&lt;span&gt;WaitForPendingFinalizers&lt;/span&gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;source&lt;/span&gt;.&lt;span&gt;RaiseEvent&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;source&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Collecting&amp;nbsp;Source.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;GC&lt;/span&gt;.&lt;span&gt;Collect&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;GC&lt;/span&gt;.&lt;span&gt;WaitForPendingFinalizers&lt;/span&gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;/*&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Output:&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Raising&amp;nbsp;event.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Event&amp;nbsp;raised.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Collecting&amp;nbsp;Target.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Finalizing&amp;nbsp;Target.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Target&amp;nbsp;finalized.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Recollecting&amp;nbsp;to&amp;nbsp;clean&amp;nbsp;weak&amp;nbsp;handler.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WeakHandler&amp;nbsp;finalized.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Raising&amp;nbsp;event.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Collecting&amp;nbsp;Source.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Source&amp;nbsp;finalized.&lt;/span&gt;
&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;
&amp;nbsp;&amp;nbsp;}
}
 
&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;strong&gt;&lt;font size="3"&gt;Target&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color:gray;"&gt;IWeakHandler&lt;/span&gt;&amp;lt;&lt;span&gt;EventArgs&lt;/span&gt;&amp;gt;
{
&amp;nbsp;&amp;nbsp;&lt;span&gt;WeakHandler&lt;/span&gt;&amp;lt;&lt;span&gt;Target&lt;/span&gt;,&amp;nbsp;&lt;span&gt;EventArgs&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;span&gt;weakHandler&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;Target&lt;/span&gt;(&lt;span&gt;Source&lt;/span&gt;&amp;nbsp;&lt;span&gt;source&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;_Source&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;source&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;weakHandler&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;WeakHandler&lt;/span&gt;&amp;lt;&lt;span&gt;Target&lt;/span&gt;,&amp;nbsp;&lt;span&gt;EventArgs&lt;/span&gt;&amp;gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Source&lt;/span&gt;.&lt;span&gt;Event&lt;/span&gt;&amp;nbsp;+=&amp;nbsp;&lt;span&gt;weakHandler&lt;/span&gt;.&lt;span&gt;OnEventRaised&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;readonly&lt;/span&gt;&amp;nbsp;&lt;span&gt;Source&lt;/span&gt;&amp;nbsp;&lt;span&gt;_Source&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;Source&lt;/span&gt;&amp;nbsp;&lt;span&gt;Source&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;_Source&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;OnEventRaised&lt;/span&gt;(&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;sender&lt;/span&gt;,&amp;nbsp;&lt;span&gt;EventArgs&lt;/span&gt;&amp;nbsp;&lt;span&gt;e&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Event&amp;nbsp;raised.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;~&lt;span&gt;Target&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Finalizing&amp;nbsp;Target.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//Omitting&amp;nbsp;the&amp;nbsp;following&amp;nbsp;line&amp;nbsp;will&amp;nbsp;cause&amp;nbsp;the&amp;nbsp;WeakHandler&amp;nbsp;to&amp;nbsp;have&amp;nbsp;a&amp;nbsp;life-time&amp;nbsp;as&amp;nbsp;the&amp;nbsp;source.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//Although&amp;nbsp;the&amp;nbsp;WeakHandler&amp;nbsp;is&amp;nbsp;just&amp;nbsp;a&amp;nbsp;body-class&amp;nbsp;that&amp;nbsp;holds&amp;nbsp;nothing&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//(remember&amp;nbsp;that&amp;nbsp;target&amp;nbsp;is&amp;nbsp;weak-referenced&amp;nbsp;hence&amp;nbsp;can&amp;nbsp;be&amp;nbsp;garbage&amp;nbsp;collected).&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Source&lt;/span&gt;.&lt;span&gt;Event&lt;/span&gt;&amp;nbsp;-=&amp;nbsp;&lt;span&gt;weakHandler&lt;/span&gt;.&lt;span&gt;OnEventRaised&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Target&amp;nbsp;finalized.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;}
}
 
&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;strong&gt;&lt;font size="3"&gt;Source&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;event&lt;/span&gt;&amp;nbsp;&lt;span style="color:olive;"&gt;EventHandler&lt;/span&gt;&amp;nbsp;&lt;span&gt;Event&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;RaiseEvent&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Raising&amp;nbsp;event.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;Event&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;nbsp;&lt;span&gt;Event&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;,&amp;nbsp;&lt;span&gt;EventArgs&lt;/span&gt;.&lt;span&gt;Empty&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;~&lt;span&gt;Source&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Debug&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Source&amp;nbsp;finalized.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;/pre&gt;
&lt;p&gt;You can &lt;strong&gt;&lt;font&gt;download&lt;/font&gt;&lt;/strong&gt; the source code from &lt;a href="http://pastebin.com/raw.php?i=Awjq99r7"&gt;here&lt;/a&gt;, or the DLL from &lt;a href="http://blogs.microsoft.co.il/blogs/shimmy/WeakHandler.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Any comments, improvements, or if you just like to shout out for fun, anything will be welcomed!&lt;/p&gt;
&lt;p&gt;HTH,&lt;br /&gt;Shimmy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1004251" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Silverlight-4/default.aspx">Silverlight-4</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Silverlight-5/default.aspx">Silverlight-5</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/ViewModel/default.aspx">ViewModel</category></item><item><title>Congratulations! We had a new babygirl!</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/23/congratulations-we-had-a-new-babygirl.aspx</link><pubDate>Mon, 23 Jan 2012 09:03:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:995219</guid><dc:creator>Shimmy</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=995219</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=995219</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/23/congratulations-we-had-a-new-babygirl.aspx#comments</comments><description>&lt;script type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;

&lt;p&gt;Hi everyone!&lt;/p&gt;
&lt;p&gt;We just&amp;nbsp;a had a very cute babygirl!&lt;/p&gt;
&lt;p&gt;Hope to post some photo any time soon...&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=995219" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category></item><item><title>UniqueAttribute that validates a unique field against its fellow rows in the database (inherits DataAnnotations.ValidationAttribute)</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/23/validationattribute-that-validates-a-unique-field-against-its-fellow-rows-in-the-database.aspx</link><pubDate>Mon, 23 Jan 2012 09:00:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:995217</guid><dc:creator>Shimmy</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=995217</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=995217</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/23/validationattribute-that-validates-a-unique-field-against-its-fellow-rows-in-the-database.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=asp.net&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;font size="1"&gt;&lt;font color="#ff0000"&gt;UPDATE: Jan 30&amp;nbsp;2012&lt;/font&gt;: Added check that entity is not itself (i.e. when user attempts to save the same entity).&lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#ff0000"&gt;UPDATE:&amp;nbsp;Feb&amp;nbsp;26 2012&lt;/font&gt;: Added support for inherited entities, where the validated property is on the sub-class of the inheritance hierarchy.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Here is a &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute.aspx"&gt;&lt;font face="courier new,courier"&gt;ValidationAttribute&lt;/font&gt;&lt;/a&gt; subclass that will allow you to validate that a column doesn&amp;#39;t have duplicates.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s intended to be used with EF 4.1 &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(VS.103).aspx"&gt;&lt;font face="courier new,courier"&gt;DbContext&lt;/font&gt;&lt;/a&gt;, or with the EF4&amp;#39;s &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx"&gt;&lt;font face="courier new,courier"&gt;ObjectContext&lt;/font&gt;&lt;/a&gt;.&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;ComponentModel&lt;/span&gt;.&lt;span&gt;DataAnnotations&lt;/span&gt;
{
&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;#if&lt;/span&gt;&amp;nbsp;!SILVERLIGHT
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Data&lt;/span&gt;.&lt;span&gt;Entity&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Data&lt;/span&gt;.&lt;span&gt;Entity&lt;/span&gt;.&lt;span&gt;Infrastructure&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Data&lt;/span&gt;.&lt;span&gt;Metadata&lt;/span&gt;.&lt;span&gt;Edm&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Data&lt;/span&gt;.&lt;span&gt;Objects&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Linq&lt;/span&gt;;
&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;&lt;/pre&gt; 
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Validates&amp;nbsp;whether&amp;nbsp;a&amp;nbsp;value&amp;nbsp;is&amp;nbsp;set&amp;nbsp;in&amp;nbsp;another&amp;nbsp;row&amp;nbsp;at&amp;nbsp;the&amp;nbsp;same&amp;nbsp;column.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Does&amp;nbsp;not&amp;nbsp;validate&amp;nbsp;null&amp;nbsp;empty&amp;nbsp;or&amp;nbsp;whitespace&amp;nbsp;strings.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;[&lt;span&gt;AttributeUsage&lt;/span&gt;(&lt;span style="color:purple;"&gt;AttributeTargets&lt;/span&gt;.&lt;span&gt;Property&lt;/span&gt;)]
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;UniqueAttribute&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span&gt;ValidationAttribute&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
 
&lt;span style="color:blue;"&gt;#if&lt;/span&gt;&amp;nbsp;SILVERLIGHT&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;Just&amp;nbsp;a&amp;nbsp;body&amp;nbsp;method,&amp;nbsp;the&amp;nbsp;ValidationAttribute&amp;nbsp;requires&amp;nbsp;the&amp;nbsp;IsValid&amp;nbsp;method&amp;nbsp;to&amp;nbsp;be&amp;nbsp;overridden.&lt;/span&gt;
&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected&amp;nbsp;override&amp;nbsp;ValidationResult&amp;nbsp;IsValid(object&amp;nbsp;value,&amp;nbsp;ValidationContext&amp;nbsp;validationContext)&lt;/span&gt;
&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;
&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;ValidationResult.Success;&lt;/span&gt;
&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;
&lt;span style="color:blue;"&gt;#else&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;readonly&lt;/span&gt;&amp;nbsp;&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;_ContextType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;ContextType&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;_ContextType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
 
&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//TODO:&amp;nbsp;If&amp;nbsp;placed&amp;nbsp;in&amp;nbsp;your&amp;nbsp;domain,&amp;nbsp;uncomment&amp;nbsp;and&amp;nbsp;replace&amp;nbsp;MyDbContext&amp;nbsp;with&amp;nbsp;your&amp;nbsp;domain&amp;#39;s&amp;nbsp;DbContext/ObjectContext&amp;nbsp;class.&lt;/span&gt;
&lt;/pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//public&amp;nbsp;UniqueAttribute()&amp;nbsp;:&amp;nbsp;this(typeof(MyDbContext))&amp;nbsp;{&amp;nbsp;}&lt;/span&gt;
 
 
&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Initializes&amp;nbsp;a&amp;nbsp;new&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;UniqueAttribute&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;contextType&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;type&amp;nbsp;of&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;DbContext&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;or&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;ObjectContext&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;subclass&amp;nbsp;that&amp;nbsp;will&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;search&amp;nbsp;for&amp;nbsp;duplicates.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;UniqueAttribute&lt;/span&gt;(&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;contextType&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;contextType&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentNullException&lt;/span&gt;(&lt;span&gt;&amp;quot;contextType&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span&gt;contextType&lt;/span&gt;.&lt;span&gt;IsSubclassOf&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span&gt;DbContext&lt;/span&gt;))&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;!&lt;span&gt;contextType&lt;/span&gt;.&lt;span&gt;IsSubclassOf&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span&gt;ObjectContext&lt;/span&gt;)))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentException&lt;/span&gt;(&lt;span&gt;&amp;quot;The&amp;nbsp;contextType&amp;nbsp;Type&amp;nbsp;must&amp;nbsp;be&amp;nbsp;a&amp;nbsp;subclass&amp;nbsp;of&amp;nbsp;DbContext&amp;nbsp;or&amp;nbsp;ObjectContext.&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;&amp;quot;contextType&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;contextType&lt;/span&gt;.&lt;span&gt;GetConstructor&lt;/span&gt;(&lt;span&gt;Type&lt;/span&gt;.&lt;span&gt;EmptyTypes&lt;/span&gt;)&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentException&lt;/span&gt;(&lt;span&gt;&amp;quot;The&amp;nbsp;contextType&amp;nbsp;type&amp;nbsp;must&amp;nbsp;declare&amp;nbsp;a&amp;nbsp;public&amp;nbsp;parameterless&amp;nbsp;consructor.&amp;quot;&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;_ContextType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;contextType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Validates&amp;nbsp;the&amp;nbsp;value&amp;nbsp;against&amp;nbsp;the&amp;nbsp;matching&amp;nbsp;columns&amp;nbsp;in&amp;nbsp;the&amp;nbsp;other&amp;nbsp;rows&amp;nbsp;of&amp;nbsp;this&amp;nbsp;table.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Note&amp;nbsp;that&amp;nbsp;this&amp;nbsp;method&amp;nbsp;does&amp;nbsp;not&amp;nbsp;validate&amp;nbsp;null&amp;nbsp;or&amp;nbsp;empty&amp;nbsp;strings.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;value&amp;nbsp;to&amp;nbsp;validate&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;validationContext&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;context&amp;nbsp;information&amp;nbsp;about&amp;nbsp;the&amp;nbsp;validation&amp;nbsp;operation.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;An&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;ValidationResult&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;class.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span&gt;ValidationResult&lt;/span&gt;&amp;nbsp;&lt;span&gt;IsValid&lt;/span&gt;(&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;,&amp;nbsp;&lt;span&gt;ValidationContext&lt;/span&gt;&amp;nbsp;&lt;span&gt;validationContext&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;value&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;&amp;nbsp;||&amp;nbsp;(&lt;span&gt;value&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;IsNullOrWhiteSpace&lt;/span&gt;((&lt;span style="color:blue;"&gt;string&lt;/span&gt;)&lt;span&gt;value&lt;/span&gt;)))&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;ValidationResult&lt;/span&gt;.&lt;span&gt;Success&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;type&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;ObjectType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;property&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;type&lt;/span&gt;.&lt;span&gt;GetProperty&lt;/span&gt;(&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;MemberName&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;type&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;property&lt;/span&gt;.&lt;span&gt;DeclaringType&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;dbcontext&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:gray;"&gt;IDisposable&lt;/span&gt;)&lt;span&gt;Activator&lt;/span&gt;.&lt;span&gt;CreateInstance&lt;/span&gt;(&lt;span&gt;_ContextType&lt;/span&gt;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;context&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;dbcontext&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span&gt;DbContext&lt;/span&gt;&amp;nbsp;?&amp;nbsp;((&lt;span style="color:gray;"&gt;IObjectContextAdapter&lt;/span&gt;)&lt;span&gt;dbcontext&lt;/span&gt;).&lt;span&gt;ObjectContext&lt;/span&gt;&amp;nbsp;:&amp;nbsp;(&lt;span&gt;ObjectContext&lt;/span&gt;)&lt;span&gt;dbcontext&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;md&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;context&lt;/span&gt;.&lt;span&gt;MetadataWorkspace&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;entityType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;md&lt;/span&gt;.&lt;span&gt;GetItems&lt;/span&gt;&amp;lt;&lt;span&gt;EntityType&lt;/span&gt;&amp;gt;(&lt;span style="color:purple;"&gt;DataSpace&lt;/span&gt;.&lt;span&gt;CSpace&lt;/span&gt;).&lt;span&gt;SingleOrDefault&lt;/span&gt;(&lt;span&gt;et&lt;/span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;span&gt;et&lt;/span&gt;.&lt;span&gt;Name&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span&gt;type&lt;/span&gt;.&lt;span&gt;Name&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span&gt;entityType&lt;/span&gt;.&lt;span&gt;BaseType&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;entityType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span&gt;EntityType&lt;/span&gt;)&lt;span&gt;entityType&lt;/span&gt;.&lt;span&gt;BaseType&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;objectType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:blue;"&gt;object&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;isInherited&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;false&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;type&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span&gt;baseType&lt;/span&gt;.&lt;span&gt;Name&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span&gt;entityType&lt;/span&gt;.&lt;span&gt;Name&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;.&lt;span&gt;BaseType&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span&gt;objectType&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;.&lt;span&gt;BaseType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;isInherited&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;true&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;methodCreateObjectSet&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span&gt;ObjectContext&lt;/span&gt;).&lt;span&gt;GetMethod&lt;/span&gt;(&lt;span&gt;&amp;quot;CreateObjectSet&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;Type&lt;/span&gt;.&lt;span&gt;EmptyTypes&lt;/span&gt;).&lt;span&gt;MakeGenericMethod&lt;/span&gt;(&lt;span&gt;baseType&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;baseObjectSet&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span&gt;ObjectQuery&lt;/span&gt;)&lt;span&gt;methodCreateObjectSet&lt;/span&gt;.&lt;span&gt;Invoke&lt;/span&gt;(&lt;span&gt;context&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;[]&amp;nbsp;{&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;objectSet&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;baseObjectSet&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;setType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;baseObjectSet&lt;/span&gt;.&lt;span&gt;GetType&lt;/span&gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;isInherited&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;ofType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;setType&lt;/span&gt;.&lt;span&gt;GetMethod&lt;/span&gt;(&lt;span&gt;&amp;quot;OfType&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;ofType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;ofType&lt;/span&gt;.&lt;span&gt;MakeGenericMethod&lt;/span&gt;(&lt;span&gt;type&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;objectSet&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span&gt;ObjectQuery&lt;/span&gt;)&lt;span&gt;ofType&lt;/span&gt;.&lt;span&gt;Invoke&lt;/span&gt;(&lt;span&gt;baseObjectSet&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;setType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;objectSet&lt;/span&gt;.&lt;span&gt;GetType&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;methodWhere&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;setType&lt;/span&gt;.&lt;span&gt;GetMethod&lt;/span&gt;(&lt;span&gt;&amp;quot;Where&amp;quot;&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;eSql&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Format&lt;/span&gt;(&lt;span&gt;&amp;quot;it.{0}&amp;nbsp;=&amp;nbsp;@{0}&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;MemberName&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;query&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span&gt;ObjectQuery&lt;/span&gt;)&lt;span&gt;methodWhere&lt;/span&gt;.&lt;span&gt;Invoke&lt;/span&gt;(&lt;span&gt;objectSet&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;[]&amp;nbsp;{&amp;nbsp;&lt;span&gt;eSql&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;[]&amp;nbsp;{&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ObjectParameter&lt;/span&gt;(&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;MemberName&lt;/span&gt;,&amp;nbsp;&lt;span&gt;value&lt;/span&gt;)&amp;nbsp;}&amp;nbsp;});
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;result&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;query&lt;/span&gt;.&lt;span&gt;Execute&lt;/span&gt;(&lt;span style="color:purple;"&gt;MergeOption&lt;/span&gt;.&lt;span&gt;NoTracking&lt;/span&gt;).&lt;span&gt;Cast&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;isValid&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;true&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;enumerator&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;result&lt;/span&gt;.&lt;span&gt;GetEnumerator&lt;/span&gt;())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;enumerator&lt;/span&gt;.&lt;span&gt;MoveNext&lt;/span&gt;())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;nameProperty&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span&gt;ObjectSet&lt;/span&gt;&amp;lt;&amp;gt;).&lt;span&gt;MakeGenericType&lt;/span&gt;(&lt;span&gt;baseType&lt;/span&gt;).&lt;span&gt;GetProperty&lt;/span&gt;(&lt;span&gt;&amp;quot;EntitySet&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;entitySet&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span&gt;EntitySet&lt;/span&gt;)&lt;span&gt;nameProperty&lt;/span&gt;.&lt;span&gt;GetValue&lt;/span&gt;(&lt;span&gt;baseObjectSet&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;entitySetName&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;entitySet&lt;/span&gt;.&lt;span&gt;Name&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;do&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;current&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;enumerator&lt;/span&gt;.&lt;span&gt;Current&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;curKey&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;context&lt;/span&gt;.&lt;span&gt;CreateEntityKey&lt;/span&gt;(&lt;span&gt;entitySetName&lt;/span&gt;,&amp;nbsp;&lt;span&gt;current&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;validatingKey&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;context&lt;/span&gt;.&lt;span&gt;CreateEntityKey&lt;/span&gt;(&lt;span&gt;entitySetName&lt;/span&gt;,&amp;nbsp;&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;ObjectInstance&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;curKey&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span&gt;validatingKey&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;isValid&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;false&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;break&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color:blue;"&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span&gt;enumerator&lt;/span&gt;.&lt;span&gt;MoveNext&lt;/span&gt;());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;isValid&lt;/span&gt;&amp;nbsp;?
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;ValidationResult&lt;/span&gt;.&lt;span&gt;Success&lt;/span&gt;&amp;nbsp;:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ValidationResult&lt;/span&gt;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Format&lt;/span&gt;(&lt;span&gt;&amp;quot;There&amp;nbsp;is&amp;nbsp;already&amp;nbsp;a&amp;nbsp;&amp;#39;{0}&amp;#39;&amp;nbsp;record&amp;nbsp;that&amp;nbsp;has&amp;nbsp;its&amp;nbsp;&amp;#39;{1}&amp;#39;&amp;nbsp;field&amp;nbsp;set&amp;nbsp;to&amp;nbsp;&amp;#39;{2}&amp;#39;.&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;ObjectType&lt;/span&gt;.&lt;span&gt;Name&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;DisplayName&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;[]&amp;nbsp;{&amp;nbsp;&lt;span&gt;validationContext&lt;/span&gt;.&lt;span&gt;MemberName&lt;/span&gt;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/pre&gt;&lt;span style="color:blue;"&gt;#endif&lt;/span&gt;
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;As soon as you will be&amp;nbsp;trying to call &lt;font face="courier new,courier"&gt;DbContext.SaveChanges&lt;/font&gt; in the DomainService,&amp;nbsp;if one of the entities is invalidated by this attribute, the save will fail.&lt;br /&gt;Since I didn&amp;#39;t test this attribute in the LinqToEntitiesDomainService, I&amp;#39;m affraid that since the ObjectContext doesn&amp;#39;t validate entities when submitting changes, you&amp;#39;ll have to make a use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.domainservices.server.domainservice.validationcontext(VS.91).aspx"&gt;&lt;font face="courier new,courier"&gt;ValidationContext&lt;/font&gt;&lt;/a&gt; property, please comment if anything is unclear or for further details.&lt;br /&gt;This attribute should work just like all the other &lt;font face="courier new,courier"&gt;ValidationAttribute&lt;/font&gt;s do. &lt;/p&gt;
&lt;p&gt;When using with&amp;nbsp;a Silverlight project and a&amp;nbsp;WCF-RIA service, as soon as you&amp;#39;ll try to commit the changes, it will stop and is reported back to the client who has its DataField decorated with the validation error, and since the &lt;a href="http://msdn.microsoft.com/en-us/library/ff422324(VS.91).aspx"&gt;&lt;font face="courier new,courier"&gt;DomainContext.SubmitChanges&lt;/font&gt;&lt;/a&gt; in the client is asynchronous, all this will happen asynchronously.&lt;/p&gt;
&lt;p&gt;To view &lt;strong&gt;&lt;font&gt;raw code&lt;/font&gt;&lt;/strong&gt; please refer&amp;nbsp;&lt;a href="http://pastebin.com/raw.php?i=QnYUSGXF"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since I didn&amp;#39;t invest&amp;nbsp;in testing it in other environments (For instance SL &amp;lt; 5.0) and other test options/features, any comments/improvements will be very appreciated.&lt;/p&gt;
&lt;p&gt;What&amp;#39;s not implemented is, selecting just the ID column and the duplicate-check column. I was too lazy to invest on building the select column (getting the ID column(s) of a specific entity).&lt;br /&gt;Anyway, depending on the column amount of the table, it shouldn&amp;#39;t make such&amp;nbsp;a huge difference, as&amp;nbsp;this query is not supposed to return more than one row anyway, unless bypassed this validation by adding rows directly&amp;nbsp;to database.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Hope this helps,&lt;br /&gt;Shimmy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=995217" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DataAnnotations/default.aspx">DataAnnotations</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/ValidationAttribute/default.aspx">ValidationAttribute</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/RIA-Services/default.aspx">RIA-Services</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DbContext/default.aspx">DbContext</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Entity+Framework+4.1/default.aspx">Entity Framework 4.1</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Entity+Framework+5.0/default.aspx">Entity Framework 5.0</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Unique-Constraint/default.aspx">Unique-Constraint</category></item><item><title>Determine if char is Hebrew</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/19/Determine-if-char-is-Hebrew.aspx</link><pubDate>Thu, 19 Jan 2012 05:38:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:991847</guid><dc:creator>Shimmy</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=991847</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=991847</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/19/Determine-if-char-is-Hebrew.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=c#&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;Simple Ex. method:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:green;"&gt;//&amp;nbsp;avoid&amp;nbsp;unicode&amp;nbsp;chars&amp;nbsp;in&amp;nbsp;code&lt;/span&gt;
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;FirstHebChar&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:blue;"&gt;char&lt;/span&gt;)1488;&amp;nbsp;&lt;span style="color:green;"&gt;//א&lt;/span&gt;
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;LastHebChar&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:blue;"&gt;char&lt;/span&gt;)1514;&amp;nbsp;&lt;span style="color:green;"&gt;//ת&amp;nbsp;&lt;/span&gt;
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;IsHebrew&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;)
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;gt;=&amp;nbsp;&lt;span&gt;FirstHebChar&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;span&gt;c&lt;/span&gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span&gt;LastHebChar&lt;/span&gt;;
}&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&lt;font color="#ff0000"&gt;Note:&lt;/font&gt; a &lt;a href="http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/19/Determine-if-char-is-Hebrew.aspx#1002894"&gt;comment&lt;/a&gt; bellow noted that the above function solely checks for hebrew characters within the א-ת range,&lt;br /&gt;&lt;/font&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;it won&amp;#39;t include punctuation marks, vowels or other biblical symbols.&lt;/font&gt;&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;font size="2" face="Arial"&gt;For a function that covers all (all that I&amp;#39;m aware of) Hebrew characters, please refer &lt;a href="http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/02/03/determine-if-char-is-hebrew-2.aspx"&gt;here&lt;/a&gt;.&lt;/font&gt;&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=991847" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Text/default.aspx">Text</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/string/default.aspx">string</category></item><item><title>Enum.IsDefined for combined values not declared in the enum body</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/12/enum-isdefined-for-combined-values-not-declared-in-the-enum-body.aspx</link><pubDate>Thu, 12 Jan 2012 08:32:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:985244</guid><dc:creator>Shimmy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=985244</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=985244</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/01/12/enum-isdefined-for-combined-values-not-declared-in-the-enum-body.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=wpf&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;When you try to determine if an Enum&amp;nbsp;value is defined in an Enum, it returns true only if the flags you&amp;#39;ve combined are explicitly&amp;nbsp;declared in the Enum.&lt;/p&gt;
&lt;p&gt;Consider this Enum:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;[&lt;span&gt;Flags&lt;/span&gt;]&lt;span style="color:green;"&gt;//&amp;nbsp;Enum defined&amp;nbsp;with a&amp;nbsp;FlagsAttribute attribute.&lt;/span&gt;
&lt;span style="color:blue;"&gt;enum&lt;/span&gt;&amp;nbsp;&lt;span style="color:purple;"&gt;Hue&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color:blue;"&gt;sbyte&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&lt;span&gt;Black&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0,&amp;nbsp;&lt;span style="color:green;"&gt;//no&amp;nbsp;color&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span&gt;Red&lt;/span&gt;&amp;nbsp;=&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&lt;span&gt;Green&lt;/span&gt;&amp;nbsp;=&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&lt;span&gt;Blue&lt;/span&gt;&amp;nbsp;=&amp;nbsp;4,
&amp;nbsp;&amp;nbsp;&lt;span&gt;Cyan&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;Green&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span&gt;Blue&lt;/span&gt;,&lt;span style="color:green;"&gt;//6&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span&gt;Magenta&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;Red&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span&gt;Blue&lt;/span&gt;,&lt;span style="color:green;"&gt;//5&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span&gt;BadColor&lt;/span&gt;&amp;nbsp;=&amp;nbsp;127
}
&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;The following line will return false:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;white&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:purple;"&gt;Hue&lt;/span&gt;.&lt;span&gt;Red&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span style="color:purple;"&gt;Hue&lt;/span&gt;.&lt;span&gt;Blue&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span style="color:purple;"&gt;Hue&lt;/span&gt;.&lt;span&gt;Green&lt;/span&gt;;&amp;nbsp;&lt;span style="color:green;"&gt;//7&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Even tho theoretically the enum combination is valid.&lt;/p&gt;
&lt;p&gt;So to make sure a value doesn&amp;#39;t exceed the enums limit, but is not necessarily declared, we can use the following function:&lt;/p&gt;
&lt;p&gt;(You can cashe the Enum.GetValues to improve performance)&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;IsDefined&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span&gt;Enum&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;)
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;dynamic&lt;/span&gt;&amp;nbsp;&lt;span&gt;dyn&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;value&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;max&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;Enum&lt;/span&gt;.&lt;span&gt;GetValues&lt;/span&gt;(&lt;span&gt;value&lt;/span&gt;.&lt;span&gt;GetType&lt;/span&gt;()).&lt;span&gt;Cast&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;dynamic&lt;/span&gt;&amp;gt;().
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Aggregate&lt;/span&gt;((&lt;span&gt;e1&lt;/span&gt;,&amp;nbsp;&lt;span&gt;e2&lt;/span&gt;)&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;span&gt;e1&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span&gt;e2&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;(&lt;span&gt;max&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span&gt;dyn&lt;/span&gt;)&amp;nbsp;==&amp;nbsp;&lt;span&gt;dyn&lt;/span&gt;;
}&lt;/font&gt;&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;The above function will solve the problem:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;Main&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[]&amp;nbsp;&lt;span&gt;args&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;white&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:purple;"&gt;Hue&lt;/span&gt;.&lt;span&gt;Red&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span style="color:purple;"&gt;Hue&lt;/span&gt;.&lt;span&gt;Blue&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span style="color:purple;"&gt;Hue&lt;/span&gt;.&lt;span&gt;Green&lt;/span&gt;;&amp;nbsp;&lt;span style="color:green;"&gt;//7&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;isDef1&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;Enum&lt;/span&gt;.&lt;span&gt;IsDefined&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span&gt;Enum&lt;/span&gt;),&amp;nbsp;&lt;span&gt;white&lt;/span&gt;); &lt;span style="color:green;"&gt;//false&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span&gt;isDef2&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;white&lt;/span&gt;.&lt;span&gt;IsDefined&lt;/span&gt;();&amp;nbsp;&lt;span style="color:green;"&gt;//true&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/pre&gt;
&lt;p&gt;Note: Performance not tested at all.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=985244" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category></item><item><title>Close window from ViewModel</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/10/05/close-window-from-viewmodel.aspx</link><pubDate>Wed, 05 Oct 2011 07:57:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:910838</guid><dc:creator>Shimmy</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=910838</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=910838</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/10/05/close-window-from-viewmodel.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=mvvm&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;Although this is somewhat corny, I will dedicate for it a post. Scenario: you want to close a window from the ViewModel, without exposing the Window to it. This can be done in a simple and clean way.&lt;br /&gt;(Some code removed for brevity)&lt;/p&gt;
&lt;p&gt;HTH,&lt;br /&gt;Shimmy&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;XAML:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Window&lt;/span&gt;
&amp;nbsp;&lt;span style="color:red;"&gt;&amp;nbsp;x&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;&amp;quot;this&amp;quot;&lt;/span&gt;
&amp;nbsp;&lt;span style="color:red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;i&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;http://schemas.microsoft.com/expression/2010/interactivity&amp;quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&lt;span style="color:red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;ei&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;http://schemas.microsoft.com/expression/2010/interactions&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;Interaction.Triggers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;EventTrigger&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;nbsp;SourceObject&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span&gt;Binding&lt;/span&gt;&lt;span style="color:blue;"&gt;}&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;nbsp;EventName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;Closed&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ei&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;CallMethodAction&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:red;"&gt;&amp;nbsp;TargetObject&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span&gt;Binding&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;nbsp;ElementName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;span style="color:blue;"&gt;}&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:red;"&gt;&amp;nbsp;MethodName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot;Close&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;EventTrigger&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;Interaction.Triggers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Window&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Code (from the ViewModel - &lt;font face="Courier New"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.practices.prism.commands.delegatecommand(PandP.40).aspx"&gt;DelegateCommand&lt;/a&gt;&lt;/font&gt;&amp;nbsp;refers to the one of Prism&amp;#39;s library, but it&amp;#39;s the same idea of &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090030"&gt;&lt;font face="courier new,courier"&gt;RelayCommand&lt;/font&gt;&lt;/a&gt; etc.):&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:gray;"&gt;ICommand&lt;/span&gt;&amp;nbsp;&lt;span&gt;_SaveAndCloseCommand&lt;/span&gt;;
&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:gray;"&gt;ICommand&lt;/span&gt;&amp;nbsp;&lt;span&gt;SaveAndCloseCommand&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;_SaveAndCloseCommand&lt;/span&gt;&amp;nbsp;??
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span&gt;_SaveAndCloseCommand&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;DelegateCommand&lt;/span&gt;(&lt;span&gt;SaveAndClose&lt;/span&gt;));
&amp;nbsp;&amp;nbsp;}
}
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;SaveAndClose&lt;/span&gt;()
{
&amp;nbsp;&amp;nbsp;&lt;span&gt;Save&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&lt;span&gt;Close&lt;/span&gt;();
}
 
&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;event&lt;/span&gt;&amp;nbsp;&lt;span style="color:olive;"&gt;EventHandler&lt;/span&gt;&amp;nbsp;&lt;span&gt;Closed&lt;/span&gt;;
&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;Close&lt;/span&gt;()
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;Closed&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)&amp;nbsp;&lt;span&gt;Closed&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;,&amp;nbsp;&lt;span&gt;EventArgs&lt;/span&gt;.&lt;span&gt;Empty&lt;/span&gt;);
}&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=910838" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/MVVM/default.aspx">MVVM</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Prism/default.aspx">Prism</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/ViewModel/default.aspx">ViewModel</category></item><item><title>TIP: Silverlight 5 Beta IMarkupExtension&lt;T&gt; and StaticExtension</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/05/17/silverlight-5-beta-imarkupextension-lt-t-gt-and-staticextension.aspx</link><pubDate>Tue, 17 May 2011 04:30:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:835775</guid><dc:creator>Shimmy</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=835775</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=835775</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/05/17/silverlight-5-beta-imarkupextension-lt-t-gt-and-staticextension.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=silverlight%205&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;In WPF, there is the well known&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.staticextension.aspx"&gt;StaticExtension&lt;/a&gt;. However Silverlight users are struggling in finding quirky&amp;nbsp;workarounds to this missing feature.&lt;/p&gt;
&lt;p&gt;Now, in Silverlight 5, Microsoft introduced the &lt;a href="http://msdn.microsoft.com/en-us/library/gg712747(VS.96).aspx"&gt;IMarkupExtension&amp;lt;T&amp;gt;&lt;/a&gt; interface.&lt;br /&gt;This one, not only reflects to the WPF &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.markupextension.aspx"&gt;MarkupExtension&lt;/a&gt;, but also is a generic&amp;nbsp;interface rather than&amp;nbsp;a class.&lt;br /&gt;The MarkupExtension abstract&amp;nbsp;class&amp;nbsp;features only&amp;nbsp;one&amp;nbsp;method &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.markupextension.providevalue.aspx"&gt;ProvideValue&lt;/a&gt;, this is a huge disadvantage, since you cannot inherit from multiple classes, and if you ever wanted to combine the MarkupExtension with another class (i.e. DependencyObject so you can set its properties with Data-Binding), this was impossible, whereas a type can implement multiple interfaces.&lt;/p&gt;
&lt;p&gt;So let&amp;#39;s see some code.&lt;/p&gt;
&lt;p&gt;XAML (m: refers to the namespace of the StaticExtension):&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ContentControl&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:red;"&gt;&amp;nbsp;prism&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;RegionManager.RegionName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span&gt;Binding&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;nbsp;Source&lt;/span&gt;&lt;span style="color:blue;"&gt;={&lt;/span&gt;&lt;strong&gt;&lt;font&gt;&lt;span&gt;m&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;Static&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;span style="color:red;"&gt;&amp;nbsp;MemberType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;vm&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:blue;"&gt;RegionNames&lt;/span&gt;&lt;span style="color:blue;"&gt;,&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;nbsp;Member&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;MainContent&lt;/span&gt;&lt;span style="color:blue;"&gt;}&lt;/span&gt;&lt;span style="color:blue;"&gt;}&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;C#:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Xaml&lt;/span&gt;;
&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;ComponentModel&lt;/span&gt;;
&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Globalization&lt;/span&gt;;
&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Reflection&lt;/span&gt;;
 
&lt;span style="color:blue;"&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Windows&lt;/span&gt;.&lt;span&gt;Markup&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Implements&amp;nbsp;a&amp;nbsp;markup&amp;nbsp;extension&amp;nbsp;that&amp;nbsp;returns&amp;nbsp;static&amp;nbsp;field&amp;nbsp;and&amp;nbsp;property&amp;nbsp;references.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;StaticExtension&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span&gt;MarkupExtension&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//&amp;nbsp;Fields&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;_member&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;_memberType&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Initializes&amp;nbsp;a&amp;nbsp;new&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Windows.Markup.StaticExtension&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;class.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;StaticExtension&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Initializes&amp;nbsp;a&amp;nbsp;new&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Windows.Markup.StaticExtension&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;class&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;using&amp;nbsp;the&amp;nbsp;provided&amp;nbsp;member&amp;nbsp;string.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;member&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;A&amp;nbsp;string&amp;nbsp;that&amp;nbsp;identifies&amp;nbsp;the&amp;nbsp;member&amp;nbsp;to&amp;nbsp;make&amp;nbsp;a&amp;nbsp;reference&amp;nbsp;to.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;This&amp;nbsp;string&amp;nbsp;uses&amp;nbsp;the&amp;nbsp;format&amp;nbsp;prefix:typeName.fieldOrPropertyName.&amp;nbsp;prefix&amp;nbsp;is&amp;nbsp;the&amp;nbsp;mapping&amp;nbsp;prefix&amp;nbsp;for&amp;nbsp;a&amp;nbsp;XAML&amp;nbsp;namespace,&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;and&amp;nbsp;is&amp;nbsp;only&amp;nbsp;required&amp;nbsp;to&amp;nbsp;reference&amp;nbsp;static&amp;nbsp;values&amp;nbsp;that&amp;nbsp;are&amp;nbsp;not&amp;nbsp;mapped&amp;nbsp;to&amp;nbsp;the&amp;nbsp;default&amp;nbsp;XAML&amp;nbsp;namespace.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;exception&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.ArgumentNullException&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&amp;lt;paramref&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;member&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;is&amp;nbsp;null.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;StaticExtension&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;member&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;member&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentNullException&lt;/span&gt;(&lt;span&gt;&amp;quot;member&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;member&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;GetFieldOrPropertyValue&lt;/span&gt;(&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;type&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;name&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;out&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;FieldInfo&lt;/span&gt;&amp;nbsp;&lt;span&gt;field&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;type&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;do&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;field&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;.&lt;span&gt;GetField&lt;/span&gt;(&lt;span&gt;name&lt;/span&gt;,&amp;nbsp;&lt;span style="color:purple;"&gt;BindingFlags&lt;/span&gt;.&lt;span&gt;Public&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span style="color:purple;"&gt;BindingFlags&lt;/span&gt;.&lt;span&gt;Static&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;field&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;field&lt;/span&gt;.&lt;span&gt;GetValue&lt;/span&gt;(&lt;span style="color:blue;"&gt;null&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;true&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;.&lt;span&gt;BaseType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;PropertyInfo&lt;/span&gt;&amp;nbsp;&lt;span&gt;property&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;type&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;do&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;property&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;.&lt;span&gt;GetProperty&lt;/span&gt;(&lt;span&gt;name&lt;/span&gt;,&amp;nbsp;&lt;span style="color:purple;"&gt;BindingFlags&lt;/span&gt;.&lt;span&gt;Public&lt;/span&gt;&amp;nbsp;|&amp;nbsp;&lt;span style="color:purple;"&gt;BindingFlags&lt;/span&gt;.&lt;span&gt;Static&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;property&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;property&lt;/span&gt;.&lt;span&gt;GetValue&lt;/span&gt;(&lt;span style="color:blue;"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;true&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;baseType&lt;/span&gt;.&lt;span&gt;BaseType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span&gt;baseType&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;false&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Returns&amp;nbsp;an&amp;nbsp;object&amp;nbsp;value&amp;nbsp;to&amp;nbsp;set&amp;nbsp;on&amp;nbsp;the&amp;nbsp;property&amp;nbsp;where&amp;nbsp;you&amp;nbsp;apply&amp;nbsp;this&amp;nbsp;extension.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;For&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Windows.Markup.StaticExtension&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;,&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;the&amp;nbsp;return&amp;nbsp;value&amp;nbsp;is&amp;nbsp;the&amp;nbsp;static&amp;nbsp;value&amp;nbsp;that&amp;nbsp;is&amp;nbsp;evaluated&amp;nbsp;for&amp;nbsp;the&amp;nbsp;requested&amp;nbsp;static&amp;nbsp;member.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;serviceProvider&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;An&amp;nbsp;object&amp;nbsp;that&amp;nbsp;can&amp;nbsp;provide&amp;nbsp;services&amp;nbsp;for&amp;nbsp;the&amp;nbsp;markup&amp;nbsp;extension.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;The&amp;nbsp;service&amp;nbsp;provider&amp;nbsp;is&amp;nbsp;expected&amp;nbsp;to&amp;nbsp;provide&amp;nbsp;a&amp;nbsp;service&amp;nbsp;that&amp;nbsp;implements&amp;nbsp;a&amp;nbsp;type&amp;nbsp;resolver&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Windows.Markup.IXamlTypeResolver&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;).&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;static&amp;nbsp;value&amp;nbsp;to&amp;nbsp;set&amp;nbsp;on&amp;nbsp;the&amp;nbsp;property&amp;nbsp;where&amp;nbsp;the&amp;nbsp;extension&amp;nbsp;is&amp;nbsp;applied.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;exception&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.InvalidOperationException&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;member&amp;nbsp;value&amp;nbsp;for&amp;nbsp;the&amp;nbsp;extension&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;is&amp;nbsp;null&amp;nbsp;at&amp;nbsp;the&amp;nbsp;time&amp;nbsp;of&amp;nbsp;evaluation.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;exception&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.ArgumentException&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Some&amp;nbsp;part&amp;nbsp;of&amp;nbsp;the&amp;nbsp;member&amp;nbsp;string&amp;nbsp;did&amp;nbsp;not&amp;nbsp;parse&amp;nbsp;properly&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;-or-&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;paramref&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;serviceProvider&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;did&amp;nbsp;not&amp;nbsp;provide&amp;nbsp;a&amp;nbsp;service&amp;nbsp;for&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Windows.Markup.IXamlTypeResolver&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;-or-&amp;nbsp;member&amp;nbsp;value&amp;nbsp;did&amp;nbsp;not&amp;nbsp;resolve&amp;nbsp;to&amp;nbsp;a&amp;nbsp;static&amp;nbsp;member.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;exception&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.ArgumentNullException&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&amp;lt;paramref&amp;nbsp;name=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;serviceProvider&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;is&amp;nbsp;null.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;ProvideValue&lt;/span&gt;(&lt;span style="color:gray;"&gt;IServiceProvider&lt;/span&gt;&amp;nbsp;&lt;span&gt;serviceProvider&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;obj2&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;InvalidOperationException&lt;/span&gt;(&lt;span&gt;&amp;quot;StaticExtension&amp;nbsp;must&amp;nbsp;have&amp;nbsp;Member&amp;nbsp;property&amp;nbsp;set&amp;nbsp;before&amp;nbsp;ProvideValue&amp;nbsp;can&amp;nbsp;be&amp;nbsp;called.&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;memberType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;MemberType&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;str&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;str2&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;memberType&lt;/span&gt;&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;str&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;str2&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;memberType&lt;/span&gt;.&lt;span&gt;FullName&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;else&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;str2&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;index&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;.&lt;span&gt;IndexOf&lt;/span&gt;(&lt;span&gt;&amp;#39;.&amp;#39;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;index&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;nbsp;0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentException&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Format&lt;/span&gt;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;quot;&amp;#39;{0}&amp;#39;&amp;nbsp;StaticExtension&amp;nbsp;value&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;resolved&amp;nbsp;to&amp;nbsp;an&amp;nbsp;enumeration,&amp;nbsp;static&amp;nbsp;field,&amp;nbsp;or&amp;nbsp;static&amp;nbsp;property.&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;qualifiedTypeName&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;.&lt;span&gt;Substring&lt;/span&gt;(0,&amp;nbsp;&lt;span&gt;index&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;qualifiedTypeName&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Empty&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentException&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Format&lt;/span&gt;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;quot;&amp;#39;{0}&amp;#39;&amp;nbsp;StaticExtension&amp;nbsp;value&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;resolved&amp;nbsp;to&amp;nbsp;an&amp;nbsp;enumeration,&amp;nbsp;static&amp;nbsp;field,&amp;nbsp;or&amp;nbsp;static&amp;nbsp;property.&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;serviceProvider&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentNullException&lt;/span&gt;(&lt;span&gt;&amp;quot;serviceProvider&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;IXamlTypeResolver&lt;/span&gt;&amp;nbsp;&lt;span&gt;service&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;serviceProvider&lt;/span&gt;.&lt;span&gt;GetService&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:gray;"&gt;IXamlTypeResolver&lt;/span&gt;))&amp;nbsp;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color:gray;"&gt;IXamlTypeResolver&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;service&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentException&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Format&lt;/span&gt;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;quot;Markup&amp;nbsp;extension&amp;nbsp;&amp;#39;{0}&amp;#39;&amp;nbsp;requires&amp;nbsp;&amp;#39;{1}&amp;#39;&amp;nbsp;be&amp;nbsp;implemented&amp;nbsp;in&amp;nbsp;the&amp;nbsp;IServiceProvider&amp;nbsp;for&amp;nbsp;ProvideValue.&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.&lt;span&gt;GetType&lt;/span&gt;().&lt;span&gt;Name&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;quot;IXamlTypeResolver&amp;quot;&lt;/span&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;memberType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;service&lt;/span&gt;.&lt;span&gt;Resolve&lt;/span&gt;(&lt;span&gt;qualifiedTypeName&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;str&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;.&lt;span&gt;Substring&lt;/span&gt;(&lt;span&gt;index&lt;/span&gt;&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;.&lt;span&gt;Length&lt;/span&gt;&amp;nbsp;-&amp;nbsp;&lt;span&gt;index&lt;/span&gt;)&amp;nbsp;-&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;str&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Empty&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentException&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Format&lt;/span&gt;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;quot;&amp;#39;{0}&amp;#39;&amp;nbsp;StaticExtension&amp;nbsp;value&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;resolved&amp;nbsp;to&amp;nbsp;an&amp;nbsp;enumeration,&amp;nbsp;static&amp;nbsp;field,&amp;nbsp;or&amp;nbsp;static&amp;nbsp;property.&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span&gt;memberType&lt;/span&gt;.&lt;span&gt;IsEnum&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;Enum&lt;/span&gt;.&lt;span&gt;Parse&lt;/span&gt;(&lt;span&gt;memberType&lt;/span&gt;,&amp;nbsp;&lt;span&gt;str&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;false&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;GetFieldOrPropertyValue&lt;/span&gt;(&lt;span&gt;memberType&lt;/span&gt;,&amp;nbsp;&lt;span&gt;str&lt;/span&gt;,&amp;nbsp;&lt;span style="color:blue;"&gt;out&lt;/span&gt;&amp;nbsp;&lt;span&gt;obj2&lt;/span&gt;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentException&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;.&lt;span&gt;Format&lt;/span&gt;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;quot;&amp;#39;{0}&amp;#39;&amp;nbsp;StaticExtension&amp;nbsp;value&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;resolved&amp;nbsp;to&amp;nbsp;an&amp;nbsp;enumeration,&amp;nbsp;static&amp;nbsp;field,&amp;nbsp;or&amp;nbsp;static&amp;nbsp;property.&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;str2&lt;/span&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;obj2&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Gets&amp;nbsp;or&amp;nbsp;sets&amp;nbsp;a&amp;nbsp;member&amp;nbsp;name&amp;nbsp;string&amp;nbsp;that&amp;nbsp;is&amp;nbsp;used&amp;nbsp;to&amp;nbsp;resolve&amp;nbsp;a&amp;nbsp;static&amp;nbsp;field&amp;nbsp;or&amp;nbsp;property&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;based&amp;nbsp;on&amp;nbsp;the&amp;nbsp;service-provided&amp;nbsp;type&amp;nbsp;resolver.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;A&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.String&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;that&amp;nbsp;identifies&amp;nbsp;the&amp;nbsp;member&amp;nbsp;to&amp;nbsp;make&amp;nbsp;a&amp;nbsp;reference&amp;nbsp;to.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;exception&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.ArgumentNullException&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Attempted&amp;nbsp;to&amp;nbsp;set&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Windows.Markup.StaticExtension.Member&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;to&amp;nbsp;null.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;Member&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;set&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;value&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentNullException&lt;/span&gt;(&lt;span&gt;&amp;quot;value&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_member&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;value&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Gets&amp;nbsp;or&amp;nbsp;sets&amp;nbsp;the&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Type&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;that&amp;nbsp;defines&amp;nbsp;the&amp;nbsp;static&amp;nbsp;member&amp;nbsp;to&amp;nbsp;return.&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;The&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Type&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;that&amp;nbsp;defines&amp;nbsp;the&amp;nbsp;static&amp;nbsp;member&amp;nbsp;to&amp;nbsp;return.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;exception&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;ArgumentNullException&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;Attempted&amp;nbsp;to&amp;nbsp;set&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;see&amp;nbsp;cref=&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;quot;System.Windows.Markup.StaticExtension.MemberType&amp;quot;&lt;/span&gt;&lt;span style="color:gray;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;to&amp;nbsp;null.&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span&gt;DefaultValue&lt;/span&gt;((&lt;span style="color:blue;"&gt;string&lt;/span&gt;)&lt;span style="color:blue;"&gt;null&lt;/span&gt;)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;Type&lt;/span&gt;&amp;nbsp;&lt;span&gt;MemberType&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;get&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_memberType&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;set&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;value&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;ArgumentNullException&lt;/span&gt;(&lt;span&gt;&amp;quot;value&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.&lt;span&gt;_memberType&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;value&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;
&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=835775" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Silverlight-5/default.aspx">Silverlight-5</category></item><item><title>TIP: Dictionary&lt;Type, T&gt; - Use generic type argument as keys</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/05/09/dictionary-lt-type-t-gt-use-generic-type-argument-for-keys.aspx</link><pubDate>Mon, 09 May 2011 10:25:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:834031</guid><dc:creator>Shimmy</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=834031</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=834031</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/05/09/dictionary-lt-type-t-gt-use-generic-type-argument-for-keys.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=wpf&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;When you want to store items by known types using the type as the key, you could add some methods to the Dictionary&amp;lt;,&amp;gt; class to make this work the generic way.&lt;/p&gt;
&lt;p&gt;It basically does nothing but does the &lt;font face="courier new,courier"&gt;&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span&gt;MyType&lt;/span&gt;)&lt;/font&gt; for you.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Note: Didn&amp;#39;t test performance impacts.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;font face="courier new,courier"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Collections&lt;/span&gt;.&lt;span&gt;Generic&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;Collections&lt;/span&gt;.&lt;span&gt;Specialized&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span&gt;TypeDictionary&lt;/span&gt;&amp;lt;&lt;span&gt;TValue&lt;/span&gt;&amp;gt;&amp;nbsp;:&amp;nbsp;&lt;span&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span&gt;Type&lt;/span&gt;,&amp;nbsp;TValue&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;TValue&amp;nbsp;&lt;span&gt;Get&lt;/span&gt;&amp;lt;&lt;span&gt;T&lt;/span&gt;&amp;gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;[&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(T)];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;Add&lt;/span&gt;&amp;lt;&lt;span&gt;T&lt;/span&gt;&amp;gt;(TValue&amp;nbsp;&lt;span&gt;value&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Add&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(T),&amp;nbsp;&lt;span&gt;value&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;Remove&lt;/span&gt;&amp;lt;&lt;span&gt;T&lt;/span&gt;&amp;gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;Remove&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(T));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;TryGetValue&lt;/span&gt;&amp;lt;&lt;span&gt;T&lt;/span&gt;&amp;gt;(&lt;span style="color:blue;"&gt;out&lt;/span&gt;&amp;nbsp;TValue&amp;nbsp;&lt;span&gt;value&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;TryGetValue&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(T),&amp;nbsp;&lt;span style="color:blue;"&gt;out&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;bool&lt;/span&gt;&amp;nbsp;&lt;span&gt;ContainsKey&lt;/span&gt;&amp;lt;&lt;span&gt;T&lt;/span&gt;&amp;gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span&gt;ContainsKey&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(T));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;This time I have a certificate too!&lt;/font&gt;&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;font face="Arial"&gt;     &lt;img border="0" alt="" src="http://a3.twimg.com/profile_images/79768071/works-on-my-machine-starburst_normal.png" width="48" height="48" /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=834031" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Dictionary/default.aspx">Dictionary</category></item><item><title>Tip: Casting in C# shortcut extension method</title><link>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/04/06/casting-in-c-shortcut-extension-method.aspx</link><pubDate>Wed, 06 Apr 2011 22:24:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:816694</guid><dc:creator>Shimmy</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/rsscomments.aspx?PostID=816694</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shimmy/commentapi.aspx?PostID=816694</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/shimmy/archive/2011/04/06/casting-in-c-shortcut-extension-method.aspx#comments</comments><description>&lt;iframe style="border:currentColor;" height="90" src="http://rcm.amazon.com/e/cm?t=shonne-20&amp;amp;o=1&amp;amp;p=48&amp;amp;l=st1&amp;amp;mode=books&amp;amp;search=wpf&amp;amp;fc1=000000&amp;amp;lt1=_blank&amp;amp;lc1=3366FF&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" width="728" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;The C# cast operator &lt;font face="courier new,courier"&gt;(Type)value&lt;/font&gt; is pretty verbose. &lt;br /&gt;When you work with COM,&amp;nbsp;extenal APIs,&amp;nbsp;&lt;font face="courier new,courier"&gt;DataSet&lt;/font&gt;s&amp;nbsp;or&amp;nbsp;other not well-OOPed infrastractures, you often get an expected type as object (i.e. you know the runtime-type of the variable is &lt;font face="courier new,courier"&gt;string&lt;/font&gt;, but it&amp;#39;s &lt;font face="courier new,courier"&gt;object&lt;/font&gt; at compile-time). &lt;/p&gt;
&lt;p&gt;Here is an example of many castings in one-line:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:gray;"&gt;IEntity&lt;/span&gt;&amp;nbsp;&lt;span&gt;entity&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:gray;"&gt;IEntity&lt;/span&gt;)&lt;span&gt;GetObjectById&lt;/span&gt;(&lt;span&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;,&amp;nbsp;34);
&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;name&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;)&lt;span&gt;entity&lt;/span&gt;.&lt;span&gt;GetField&lt;/span&gt;(&lt;span&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;);
&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;length&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;name&lt;/span&gt;.&lt;span&gt;Length&lt;/span&gt;;
&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Or as a one-liner, you really get confused with the parenthesis:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;len&lt;/span&gt;&amp;nbsp;=&amp;nbsp;((&lt;span style="color:blue;"&gt;string&lt;/span&gt;)((&lt;span style="color:gray;"&gt;IEntity&lt;/span&gt;)&lt;span&gt;GetObjectById&lt;/span&gt;(&lt;span&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;,&amp;nbsp;34)).&lt;span&gt;GetField&lt;/span&gt;(&lt;span&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;)).&lt;span&gt;Length&lt;/span&gt;;
&lt;/pre&gt;
&lt;p&gt;With this extension you can make the code a bit more readable:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:gray;"&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:gray;"&gt;IEntity&lt;/span&gt;&amp;nbsp;&lt;span&gt;entity&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;GetObjectById&lt;/span&gt;(&lt;span&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;,&amp;nbsp;34).&lt;span&gt;&lt;strong&gt;&lt;font&gt;As&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&amp;lt;&lt;span style="color:gray;"&gt;IEntity&lt;/span&gt;&amp;gt;();
&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;nbsp;&lt;span&gt;name&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;entity&lt;/span&gt;.&lt;span&gt;GetField&lt;/span&gt;(&lt;span&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;).&lt;span&gt;&lt;strong&gt;&lt;font&gt;As&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt;();
&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;length&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;name&lt;/span&gt;.&lt;span&gt;Length&lt;/span&gt;;
 
&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;len&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;GetObjectById&lt;/span&gt;(&lt;span&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;,&amp;nbsp;34).&lt;span&gt;&lt;strong&gt;&lt;font&gt;As&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&amp;lt;&lt;span style="color:gray;"&gt;IEntity&lt;/span&gt;&amp;gt;().
&amp;nbsp;&amp;nbsp;&lt;span&gt;GetField&lt;/span&gt;(&lt;span&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;).&lt;span&gt;&lt;strong&gt;&lt;font&gt;As&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt;().
&amp;nbsp;&amp;nbsp;&lt;span&gt;Length&lt;/span&gt;;
&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Here is &lt;strong&gt;&lt;font color="#000000"&gt;the extension&lt;/font&gt;&lt;/strong&gt;:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;Directly&amp;nbsp;casts&amp;nbsp;an&amp;nbsp;object&amp;nbsp;to&amp;nbsp;a&amp;nbsp;desired&amp;nbsp;type.&lt;/span&gt;
&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;&lt;span&gt;As&lt;/span&gt;&amp;lt;&lt;span&gt;T&lt;/span&gt;&amp;gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;value&lt;/span&gt;)
{
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;(T)&lt;span&gt;value&lt;/span&gt;;
}
&lt;/pre&gt;
&lt;p&gt;There is actually nothing sophisticated in this, and cost much more performance (calling an extension method).&lt;br /&gt;But is useful for certain scenarios.&lt;/p&gt;
&lt;p&gt;A short performance test shws that using the cast operator is about&amp;nbsp;as twice as faster than the function:&lt;/p&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;span style="color:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&lt;span&gt;Main&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[]&amp;nbsp;&lt;span&gt;args&lt;/span&gt;)
{
&amp;nbsp;&amp;nbsp;&lt;span&gt;Stopwatch&lt;/span&gt;&amp;nbsp;&lt;span&gt;watch&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;Stopwatch&lt;/span&gt;.&lt;span&gt;StartNew&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;nbsp;10000000;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;++)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;myInt&lt;/span&gt;&amp;nbsp;=&amp;nbsp;34;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;theInt&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;myInt&lt;/span&gt;.&lt;span&gt;As&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;gt;();
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&lt;span&gt;watch&lt;/span&gt;.&lt;span&gt;Stop&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;long&lt;/span&gt;&amp;nbsp;&lt;span&gt;elapsedAs&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;watch&lt;/span&gt;.&lt;span&gt;ElapsedTicks&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&lt;span&gt;watch&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;Stopwatch&lt;/span&gt;.&lt;span&gt;StartNew&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;nbsp;10000000;&amp;nbsp;&lt;span&gt;i&lt;/span&gt;++)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;&lt;span&gt;myInt&lt;/span&gt;&amp;nbsp;=&amp;nbsp;34;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&gt;theInt&lt;/span&gt;&amp;nbsp;=&amp;nbsp;(&lt;span style="color:blue;"&gt;int&lt;/span&gt;)&lt;span&gt;myInt&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&lt;span&gt;watch&lt;/span&gt;.&lt;span&gt;Stop&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;long&lt;/span&gt;&amp;nbsp;&lt;span&gt;elapsedCast&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span&gt;watch&lt;/span&gt;.&lt;span&gt;ElapsedTicks&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&lt;span&gt;Console&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;As&amp;nbsp;function&amp;nbsp;took&amp;nbsp;{0}&amp;nbsp;ticks&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;elapsedAs&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&lt;span&gt;Console&lt;/span&gt;.&lt;span&gt;WriteLine&lt;/span&gt;(&lt;span&gt;&amp;quot;Cast&amp;nbsp;operator&amp;nbsp;took&amp;nbsp;{0}&amp;nbsp;ticks&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span&gt;elapsedCast&lt;/span&gt;);
}
&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;Results:&lt;/font&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="background:white;color:black;font-family:Consolas;font-size:11px;"&gt;As function took 645276 ticks&lt;br /&gt;Cast operator took 294869 ticks&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=816694" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Extension+Methods/default.aspx">Extension Methods</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Type-Conversion/default.aspx">Type-Conversion</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Cast/default.aspx">Cast</category><category domain="http://blogs.microsoft.co.il/blogs/shimmy/archive/tags/Convert/default.aspx">Convert</category></item></channel></rss>