<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Jimmy Tønners Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jimmytr/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jimmytr/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 04:05:41 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Snippet: Construct WCF Binding from string (xml)</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/snippet-construct-wcf-binding-from-string-xml</link>
      <pubDate>Tue, 15 Feb 2011 11:41:24 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2011/02/15/snippet-construct-wcf-binding-from-string-xml/</guid>
      <description><![CDATA[Here is a snippet to convert a bindingconfiguration xml fragment into a Binding (with a few...]]></description>
      <content:encoded><![CDATA[<p>Here is a snippet to convert a bindingconfiguration xml fragment into a Binding (with a few limitations).</p>
<p><span style="COLOR: #2b91af">Configuration</span>&nbsp;configSystem&nbsp;=&nbsp;<span style="COLOR: #2b91af">ConfigurationManager</span>.OpenExeConfiguration(<span style="COLOR: #2b91af">ConfigurationUserLevel</span>.None);<br /><span style="COLOR: blue">var</span>&nbsp;bindingSection&nbsp;=&nbsp;<span style="COLOR: #2b91af">BindingsSection</span>.GetSection(configSystem);<br /><span style="COLOR: blue">string</span>&nbsp;customConfig&nbsp;=&nbsp;<span style="COLOR: #a31515">"&lt;netTcpBinding&gt;&lt;binding&nbsp;name=\"netTcpBinding\"&nbsp;maxReceivedMessageSize=\"12345\"&nbsp;hostNameComparisonMode=\"Exact\"&nbsp;/&gt;&lt;/netTcpBinding&gt;"</span>;<br /><span style="COLOR: green">//&nbsp;another&nbsp;example:&nbsp;</span><br /><span style="COLOR: green">//&nbsp;string&nbsp;customConfig&nbsp;=&nbsp;"&lt;binding&nbsp;name=\"basicHttpBinding\"&nbsp;messageEncoding=\"Mtom\"&nbsp;maxReceivedMessageSize=\"14000\"&nbsp;allowCookies=\"True\"&nbsp;/&gt;&lt;/basicHttpBinding&gt;";</span><br />bindingSection.SectionInformation.SetRawXml(<span style="COLOR: blue">string</span>.Format&nbsp;(<span style="COLOR: #a31515">"&lt;bindings&gt;{0}&lt;/bindings&gt;"</span>,customConfig));<br /><span style="COLOR: #2b91af">BindingCollectionElement</span>&nbsp;bindingCollectionElement&nbsp;=&nbsp;<span style="COLOR: blue">null</span>;<br /><span style="COLOR: blue">foreach</span>&nbsp;(<span style="COLOR: #2b91af">BindingCollectionElement</span>&nbsp;bicoelem&nbsp;<span style="COLOR: blue">in</span>&nbsp;bindingSection.BindingCollections)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: blue">if</span>&nbsp;(0&nbsp;&lt;&nbsp;bicoelem.ConfiguredBindings.Count)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindingCollectionElement&nbsp;=&nbsp;bicoelem;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: blue">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><span style="COLOR: blue">var</span>&nbsp;newBinding&nbsp;=&nbsp;(<span style="COLOR: #2b91af">Binding</span>)bindingCollectionElement.BindingType.Assembly.CreateInstance(bindingCollectionElement.BindingType.FullName);<br /><span style="COLOR: #2b91af">IBindingConfigurationElement</span>&nbsp;bEleEx&nbsp;=&nbsp;bindingCollectionElement.ConfiguredBindings[0];<br />bEleEx.ApplyConfiguration(newBinding);</p>
<p>At this point the <strong>newBinding</strong> is configured with the configurationoptions you added in the "customConfig" string.</p>
<p>HTH</p>]]></content:encoded>
    </item>
    <item>
      <title>Mixing MEF and PIAB</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/mixing-mef-and-piab</link>
      <pubDate>Mon, 21 Jun 2010 15:06:24 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2010/06/21/mixing-mef-and-piab/</guid>
      <description><![CDATA[The Policy Injection Application Block (PIAB) provides a way to dynamically apply cross-cutting...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: Calibri; font-size: small;">The Policy Injection Application Block (PIAB) provides a way to dynamically apply cross-cutting concerns by configuration or attributes. The combination of this technique and composition using Managed Extensibility Framework (MEF) can be realized through the use of a factory method as demonstrated here. The example demonstrates PIAB by the use of a CallHandler specifically for incrementing a performance counter. This is handled by the </span><span style="FONT-FAMILY: Consolas; COLOR: #2b91af; FONT-SIZE: 9.5pt">PerformanceCounterCallHandlerAttribute </span><span style="font-family: Calibri; font-size: small;">found in </span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">Microsoft.Practices.EnterpriseLibrary.PolicyInjection.dll. </span><span style="font-family: Calibri; font-size: small;">In the&nbsp;example the interface </span><span style="FONT-FAMILY: Consolas; COLOR: #2b91af; FONT-SIZE: 9.5pt">ISomeService</span><span style="font-size: small;"><span style="font-family: Calibri;"> is what is exported to MEF for composition.<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">interface</span> <span style="COLOR: #2b91af">ISomeService</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">void</span> TestMethod();<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: Calibri; font-size: small;">In order to use a type with policy injection it must derive from </span><span style="FONT-FAMILY: Consolas; COLOR: #2b91af; FONT-SIZE: 9.5pt">MarshalByRefObject</span><span style="font-size: small;"><span style="font-family: Calibri;">: <o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">SomeService</span> : <b><span style="COLOR: #2b91af">MarshalByRefObject</span></b>, <span style="COLOR: #2b91af">ISomeService</span><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: blue">public</span> SomeService() {}<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="COLOR: #2b91af">PerformanceCounterCallHandler</span>(<span style="COLOR: #a31515">"EntLibPerfTest"</span>, <span style="COLOR: #a31515">"lta"</span>)]<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">void</span> TestMethod()<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">":-) Called my TestMethod"</span>); //LOGIC<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: Calibri;">The parameters to the PerformanceCounterCallHandler attribute represents the performance counter category and instance name respectively. In order to allow PIAB to do its work you should retrieve the type through the static Create method on the PolicyInjection class (or Wrap it):<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #2b91af">SomeService </span>s = <span style="COLOR: #2b91af">PolicyInjection</span>.Create&lt;<span style="COLOR: #2b91af">SomeService</span>&gt;();<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: Calibri; font-size: small;"></span>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: Calibri; font-size: small;">MEF works with [Export] and [Import] attributes and will construct the registered export when a client asks for an implementation (according to the Creation Policy of course). Therefore it is not an option to export the type </span><span style="FONT-FAMILY: Consolas; COLOR: #2b91af; FONT-SIZE: 9.5pt">SomeService</span><span style="font-size: small;"><span style="font-family: Calibri;"> directly. Instead we create a Factory for the type that returns the type after&nbsp;applying registered policies for that type:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">SomeServiceFactory</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<span style="COLOR: #2b91af">Export</span>(<span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">ISomeService</span>))]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">ISomeService</span> Instance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: blue">get</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: green">//return new SomeService();</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">return</span> <span style="COLOR: #2b91af">PolicyInjection</span>.Create&lt;<span style="COLOR: #2b91af">SomeService</span>&gt;()<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: Calibri;">This solves the problem of delegating the construction to our Policy Injection Application Block, and you can simply write:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Program</span><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">static</span> <span style="COLOR: blue">void</span> Main(<span style="COLOR: blue">string</span>[] args)<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">using</span> (<span style="COLOR: blue">var</span> catalog = <span style="COLOR: blue">new</span> <span style="COLOR: #2b91af">AssemblyCatalog</span>(<span style="COLOR: #2b91af">Assembly</span>.GetExecutingAssembly()))<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: blue">using</span> (<span style="COLOR: blue">var</span> container = <span style="COLOR: blue">new</span> <span style="COLOR: #2b91af">CompositionContainer</span>(catalog)) <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #2b91af">ISomeService</span> svc = container.GetExport&lt;<span style="COLOR: #2b91af">ISomeService</span>&gt;().Value; // wrapped<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; svc.TestMethod();<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: Calibri;">If we take a dependency in another class of this service as:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; [<span style="COLOR: #2b91af">Export</span>(<span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">MEFComposedType</span>))]<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">MEFComposedType</span><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #2b91af">ISomeService</span> _someservice;<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="COLOR: #2b91af">ImportingConstructor</span>]<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> MEFComposedType(<span style="COLOR: #2b91af">ISomeService</span> service)<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _someservice = service;<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">void</span> Foo()<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _someservice.TestMethod();<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: Calibri;">It will be created by our factory method and injected as expected:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><o:p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></o:p></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Program</span><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">static</span> <span style="COLOR: blue">void</span> Main(<span style="COLOR: blue">string</span>[] args)<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">using</span> (<span style="COLOR: blue">var</span> catalog = <span style="COLOR: blue">new</span> <span style="COLOR: #2b91af">AssemblyCatalog</span>(<span style="COLOR: #2b91af">Assembly</span>.GetExecutingAssembly()))<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: blue">using</span> (<span style="COLOR: blue">var</span> container = <span style="COLOR: blue">new</span> <span style="COLOR: #2b91af">CompositionContainer</span>(catalog)) <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #2b91af">MEFComposedType</span> mct = container.GetExportedValue&lt;<span style="COLOR: #2b91af">MEFComposedType</span>&gt;();<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mct.Foo();<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: Calibri;">This will work fine for dependencies you can isolate, but if you rely on MEF to construct and compose more complex graphs of &nbsp;types it may become necessary to use the static <b>Wrap</b> method of the PolicyInjection before using services.<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: Calibri;">Another way to accomplish almost the same is to export the actual type AND the interfaces and use the factory to add the policy:<o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; [<b><span style="COLOR: #2b91af">Export</span></b>]<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">SomeService</span> : <span style="COLOR: #2b91af">MarshalByRefObject</span>, <span style="COLOR: #2b91af">ISomeService</span><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="COLOR: #2b91af">PerformanceCounterCallHandler</span>(<span style="COLOR: #a31515">"EntLibPerfTest"</span>, <span style="COLOR: #a31515">"lta"</span>)]<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">void</span> TestMethod()<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #2b91af">Console</span>.WriteLine(<span style="COLOR: #a31515">":-) Called my TestMethod"</span>);<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">SomeServiceFactory</span><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #2b91af">SomeService</span> _someservice;<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="COLOR: #2b91af">ImportingConstructor</span>]<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> SomeServiceFactory(<b><span style="COLOR: #2b91af">SomeService</span> someservice</b>)<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _someservice = someservice;<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="COLOR: #2b91af">Export</span>(<span style="COLOR: blue">typeof</span>(<b><span style="COLOR: #2b91af">ISomeService</span></b>))]<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">public</span> <b><span style="COLOR: #2b91af">ISomeService</span></b> Instance<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">get</span><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: blue">return</span> <span style="COLOR: #2b91af">PolicyInjection</span>.<b>Wrap&lt;<span style="COLOR: #2b91af">SomeService</span>&gt;</b>(_someservice);<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: Calibri;">This method has the unfortunate side-effect of exporting actual types to the catalog, but solves the problem of using policy injection in complex graphs of dependencies. An alternative method could be interface inheritance. Having one public Interface that other components takes dependencies on and an internal interface deriving from this would allow for the usual flexibility. </span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Upgrade SQL CE Database from 3.1 to 3.5</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/upgrade-sql-ce-database-from-3-1-to-3-5</link>
      <pubDate>Mon, 26 Apr 2010 02:10:00 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2010/04/26/upgrade-sql-ce-database-from-3-1-to-3-5/</guid>
      <description><![CDATA[var engine = new System.Data.SqlServerCe.SqlCeEngine("Data Source=" +...]]></description>
      <content:encoded><![CDATA[<SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">var</SPAN><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> engine = <SPAN style="COLOR: blue">new</SPAN> System.Data.SqlServerCe.<SPAN style="COLOR: #2b91af">SqlCeEngine</SPAN>(<SPAN style="COLOR: #a31515">"Data Source="</SPAN> + filename);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">engine.EnsureVersion35(filename);<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal>--HELPER CLASS---</P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">SqlCeUpgrade</SPAN><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> EnsureVersion35(<SPAN style="COLOR: blue">this</SPAN> <SPAN style="COLOR: #2b91af">SqlCeEngine</SPAN> engine, <SPAN style="COLOR: blue">string</SPAN> filename)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">try</SPAN><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN> fileversion = DetermineVersion(filename);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (fileversion == <SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN>.SQLCE20)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">ApplicationException</SPAN>(<SPAN style="COLOR: #a31515">"Unable to upgrade from 2.0 to 3.5"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN>.SQLCE35 &gt; fileversion)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>engine.Upgrade();<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">catch</SPAN> (<SPAN style="COLOR: #2b91af">Exception</SPAN> ex)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.WriteLine(ex.Message);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN>;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">enum</SPAN> <SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>SQLCE20 = 0,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>SQLCE30 = 1,<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>SQLCE35 = 2<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN> DetermineVersion(<SPAN style="COLOR: blue">string</SPAN> filename)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">var</SPAN> versionDictionary = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Dictionary</SPAN>&lt;<SPAN style="COLOR: blue">int</SPAN>, <SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN>&gt; <o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{ <o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{ 0x73616261, <SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN>.SQLCE20 }, <o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{ 0x002dd714, <SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN>.SQLCE30},<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{ 0x00357b9d, <SPAN style="COLOR: #2b91af">SQLCEVersion</SPAN>.SQLCE35}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>};<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">int</SPAN> versionLONGWORD = 0;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">try</SPAN><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">using</SPAN> (<SPAN style="COLOR: blue">var</SPAN> fs = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">FileStream</SPAN>(filename, <SPAN style="COLOR: #2b91af">FileMode</SPAN>.Open))<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>fs.Seek(16, <SPAN style="COLOR: #2b91af">SeekOrigin</SPAN>.Begin);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: blue">using</SPAN> (<SPAN style="COLOR: #2b91af">BinaryReader</SPAN> reader = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">BinaryReader</SPAN>(fs))<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>versionLONGWORD = reader.ReadInt32();<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">catch</SPAN><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN>;<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (versionDictionary.ContainsKey(versionLONGWORD))<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> versionDictionary[versionLONGWORD];<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">else</SPAN><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">ApplicationException</SPAN>(<SPAN style="COLOR: #a31515">"Unable to determine database file version"</SPAN>);<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal mce_keep="true">&nbsp;</P></SPAN></SPAN></o:p></SPAN>]]></content:encoded>
    </item>
    <item>
      <title>Just Released: Microsoft Enterprise Library 5.0</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/just-released-microsoft-enterprise-library-5-0</link>
      <pubDate>Wed, 21 Apr 2010 09:04:00 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2010/04/21/just-released-microsoft-enterprise-library-5-0/</guid>
      <description><![CDATA[See details here:
https://msdn.microsoft.com/en-us/library/ff632023.aspx
and read Grigori's post...]]></description>
      <content:encoded><![CDATA[<P>See details here:</P>
<P><A href="https://msdn.microsoft.com/en-us/library/ff632023.aspx">https://msdn.microsoft.com/en-us/library/ff632023.aspx</A></P>
<P>and read Grigori's post here:</P>
<P><A href="https://blogs.msdn.com/agile/archive/2010/04/20/microsoft-enterprise-library-5-0-released.aspx">https://blogs.msdn.com/agile/archive/2010/04/20/microsoft-enterprise-library-5-0-released.aspx</A></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Clean-up your desktop with fences</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/clean-up-your-desktop-with-fences</link>
      <pubDate>Wed, 31 Mar 2010 14:02:00 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2010/03/31/clean-up-your-desktop-with-fences/</guid>
      <description><![CDATA[Neat tool for grouping "stuff" on your desktop - fences from Stardock.com - go here]]></description>
      <content:encoded><![CDATA[Neat tool for grouping "stuff" on your desktop - fences from Stardock.com - <A title="go here" href="https://www.stardock.com/products/fences/" target=_blank mce_href="https://www.stardock.com/products/fences/">go here</A>]]></content:encoded>
    </item>
    <item>
      <title>New Feature Builder Power Tools</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/new-feature-builder-power-tools</link>
      <pubDate>Wed, 31 Mar 2010 13:32:00 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2010/03/31/new-feature-builder-power-tools/</guid>
      <description><![CDATA[Those of you interested in Software Factories and Visual Studio Automation may find it relevant to...]]></description>
      <content:encoded><![CDATA[<P>Those of you interested in Software Factories and Visual Studio Automation may find it relevant to investigate the new Feature Builder Power Tools. I will be happy to hear about your experiences and suggestions. </P>
<P>Exerpt from <A title=landingpage href="https://visualstudiogallery.msdn.microsoft.com/en-us/396c5990-6356-41c0-aa20-af4c3e58c7ae" mce_href="https://visualstudiogallery.msdn.microsoft.com/en-us/396c5990-6356-41c0-aa20-af4c3e58c7ae">landingpage</A>:</P>
<P><SPAN style="FONT-FAMILY: arial,helvetica,sans-serif"><SPAN style="FONT-SIZE: small"><FONT size=3><EM>Feature Builder is a Power Tool for Visual Studio 2010 (preview)&nbsp;which helps you easily&nbsp;create rich Visual Studio extensions.&nbsp;These extensions include tools (Visual Studio automation), code (your sample code or binaries you wish to share with others) and a map (a set of steps your users will want to follow to get the best experience with your extension). You can use this power tool to quickly package up sample code with custom menus, or take the time to create&nbsp;complete automated guidance experiences targeted toward a specific technology. You can share your extension with users by distributing a .vsix file, or posting to the Visual Studio Gallery.</EM></FONT></SPAN></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Free Book: A Guide to Claims-Based Identity and Access Control</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/free-book-a-guide-to-claims-based-identity-and-access-control</link>
      <pubDate>Thu, 04 Mar 2010 00:30:00 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2010/03/04/free-book-a-guide-to-claims-based-identity-and-access-control/</guid>
      <description><![CDATA[Another free&nbsp;book from our Patterns&amp;Practices team about something that you know you ought...]]></description>
      <content:encoded><![CDATA[<P>Another free&nbsp;book from our Patterns&amp;Practices team about something that you know you ought to know a little about :-) - Claims Based Identity and Access Control.</P>
<P>Get the Book here - <A href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=4c09ffe4-43dd-4fcc-be35-c897c9bc4386">https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=4c09ffe4-43dd-4fcc-be35-c897c9bc4386</A> <BR>Code samples here - <A href="https://www.microsoft.com/downloads/details.aspx?familyid=33829BCF-F5EA-4650-B807-57C63A753753&amp;displaylang=en">https://www.microsoft.com/downloads/details.aspx?familyid=33829BCF-F5EA-4650-B807-57C63A753753&amp;displaylang=en</A> </P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Dynamically Loading ModuleCatalog in Composite (PRISM) Silverlight Application</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/dynamically-loading-modulecatalog-in-composite-prism-silverlight-application</link>
      <pubDate>Thu, 25 Feb 2010 13:38:00 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2010/02/25/dynamically-loading-modulecatalog-in-composite-prism-silverlight-application/</guid>
      <description><![CDATA[Intercept the Run method of your bootstrapper by defining a new Run method, fetch the list of...]]></description>
      <content:encoded><![CDATA[<P>Intercept the Run method of your bootstrapper by defining a <STRONG>new</STRONG> Run method, fetch the list of modules (list trimmed to the user in question of course) and populate the catalog from this.</P>
<P>poc code? <BR>Here you are (note I am using a custom RIA domain service to trim the list of modules)<FONT size=2></P></FONT><!-- code formatted by https://manoli.net/csharpformat/ --><PRE class=csharpcode>    <SPAN class=kwrd>public</SPAN> <SPAN class=kwrd>class</SPAN> Bootstrapper : UnityBootstrapper
    {
        ModuleCatalog catalog = <SPAN class=kwrd>new</SPAN> ModuleCatalog();
        <SPAN class=kwrd><STRONG>new</STRONG></SPAN> <SPAN class=kwrd>public</SPAN> <SPAN class=kwrd>void</SPAN> Run()
        {
            AuthenticationContext ctx = <SPAN class=kwrd>new</SPAN> AuthenticationContext();
            EntityQuery&lt;Module&gt; query = ctx.GetModulesQuery();
            ctx.Load&lt;Module&gt;(query, loadOperation =&gt;
                {
                    <SPAN class=kwrd>if</SPAN> (loadOperation.HasError)
                    {
                        <SPAN class=kwrd>throw</SPAN> <SPAN class=kwrd>new</SPAN> Exception(<SPAN class=str>"Not able to load catalog"</SPAN>);
                    }
                    <SPAN class=kwrd>foreach</SPAN> (var item <SPAN class=kwrd>in</SPAN> ctx.Modules)
                    {
                        catalog.AddModule(<SPAN class=kwrd>new</SPAN> ModuleInfo()
                        {
                            InitializationMode = (InitializationMode)Enum.Parse(<SPAN class=kwrd>typeof</SPAN>(InitializationMode), item.InitializationMode, <SPAN class=kwrd>true</SPAN>),
                            ModuleName = item.Name,
                            ModuleType = item.TypeName,
                            Ref = item.Xap
                        });
                    }

                    <STRONG><SPAN class=kwrd>base</SPAN>.Run();</STRONG>

                },<SPAN class=kwrd>null</SPAN>);
        }
        
        <SPAN class=kwrd>protected</SPAN> <SPAN class=kwrd>override</SPAN> DependencyObject CreateShell()
        {
            Shell shell = Container.Resolve&lt;Shell&gt;();
            Application.Current.RootVisual = shell;
            <SPAN class=kwrd>return</SPAN> shell;
        }

        <SPAN class=kwrd>protected</SPAN> <SPAN class=kwrd>override</SPAN> IModuleCatalog GetModuleCatalog()
        {
            <SPAN class=kwrd>return</SPAN> catalog;
        }
    }
</PRE>]]></content:encoded>
    </item>
    <item>
      <title>Code Contracts</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/code-contracts</link>
      <pubDate>Sat, 25 Apr 2009 16:00:00 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2009/04/25/code-contracts/</guid>
      <description><![CDATA[&nbsp;pre-conditions, post-conditions, object invariants in .NET - go here ]]></description>
      <content:encoded><![CDATA[<P>&nbsp;pre-conditions, post-conditions, object invariants in .NET - go <A title="Code Contracts" href="https://msdn.microsoft.com/en-us/devlabs/dd491992.aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/devlabs/dd491992.aspx">here</A> </P>]]></content:encoded>
    </item>
    <item>
      <title>Share sourcecode between Silverlight and WPF Applications</title>
      <link>https://docs.microsoft.com/archive/blogs/jimmytr/share-sourcecode-between-silverlight-and-wpf-applications</link>
      <pubDate>Wed, 11 Jun 2008 16:49:30 GMT</pubDate>
      <dc:creator><![CDATA[jimmytønners]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jimmytr/2008/06/11/share-sourcecode-between-silverlight-and-wpf-applications/</guid>
      <description><![CDATA[Sharing code between Silverlight and WPF Applications has been a returning wish from several of the...]]></description>
      <content:encoded><![CDATA[<p>Sharing code between Silverlight and WPF Applications has been a returning wish from several of the customers in our Microsoft Innovation Center in Denmark. The base class libraries are very similar, but obviously something is missing in the 3-4 MB Silverlight download you just installed on that iMac in your girlfriends officespace... therefore if you use features in .NET that is not supported by the SL BCL sharing is not possible. As you are compiling your projects to a given runtime the binary sharing is not really an option either. That leaves us with <strong>source code sharing</strong> - which is close to 100% better than no sharing at all.</p>  <p>Code to share typically include Presentation Models, Controllers, Domain Objects, Data Transfer Objects etc. </p>  <p>It is a good idea to start with the lowest denominator (Silverlight) if you have the choice from the beginning of your project. Some limitations may require you to think completely differently than you would normally if you were starting out with the full featureset of WPF (ex. ICommand) - you will eventually run into grayzones and I will leave it up to your judgement to decide when and how much you can/should share.</p>  <p>One way to achieve code file sharing is to use the &quot;Add As Link&quot; in the &quot;Add Existing Item&quot; dialog in Visual Studio (push the little arrow to get to it)</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_2.png" original-url="https://blogs.msdn.com/blogfiles/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="304" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_thumb.png" width="347" border="0" /></a> </p>  <p>An example is shown below:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_4.png" original-url="https://blogs.msdn.com/blogfiles/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_4.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="171" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/jimmytr/WindowsLiveWriter/SharesourcecodebetweenSilverlightandWPFA_140F0/image_thumb_1.png" width="207" border="0" /></a> </p>  <p>Notice the &quot;link&quot; icon on the &quot;MyClass.cs&quot; file in the Silverlight project.</p>  <p>If you have code that is not really shared but nice to keep in the shared file you can make use of the C# preprocessor directives. That sounds like a bad thing to do, but you may have to use different namespaces etc. Silverlight projects actually has a SILVERLIGHT &quot;define&quot; allowing you to include specific code simply by writing:</p>  <p>#if SILVERLIGHT   <br />using System.Windows.Media.Animation;    <br />#endif</p>  <p>You will notice that this is grayed out in the FullCLR project (and obviously the directive <em>#if !SILVERLIGHT</em> may be used in the opposite case)</p>  <p>I have just learned about <a href="https://www.claassen.net/geek/blog/2008/03/sharing-code-between-silverlight-and.html">another way of sharing source files</a> that is less visible in the UI (no &quot;linked icon&quot;) but seem to solve the exact same problem.</p>  <p>Any comments and other ideas are welcome - i acknowledge that it is kind of simple but it solves most cases where source code sharing is possible.</p>]]></content:encoded>
    </item>
  </channel>
</rss>