<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0MCRnc6eip7ImA9WxBVFko.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179</id><updated>2010-02-20T16:24:27.912+01:00</updated><title>BAKOPANOS KONSTANTINOS</title><subtitle type="html">Licensed to code!</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.deaddevssociety.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/BakopanosKonstantinos" /><feedburner:info uri="bakopanoskonstantinos" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0MCRnc5eCp7ImA9WxBVFko.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-3695407501954817027</id><published>2010-02-20T16:13:00.004+01:00</published><updated>2010-02-20T16:24:27.920+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-20T16:24:27.920+01:00</app:edited><title>NUnit Hello Test</title><content type="html">You can download NUnit from http://www.nunit.org/&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Getting started (Hello Test) !!!&lt;/span&gt;&lt;br /&gt;
Let's write our first test and run/debug it. &lt;br /&gt;
1. Create a class library in visual studio. A good convention is to suffix all your test projects with *Tests.&lt;br /&gt;
2. Add a reference to Nunit &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_UqpPEshhhrk/S3_8aYgH4pI/AAAAAAAAAEw/NoF_qXV0pZc/s1600-h/addreference.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ct="true" src="http://2.bp.blogspot.com/_UqpPEshhhrk/S3_8aYgH4pI/AAAAAAAAAEw/NoF_qXV0pZc/s320/addreference.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Create a class and optionally suffix it with "Fixture". Then decorate it with the [TestFixture] attribute. &lt;br /&gt;
&lt;script class="brush: c-sharp" type="syntaxhighlighter"&gt;
&lt;![CDATA[ 
using NUnit.Framework;
namespace SampleTests
{
    [TestFixture]
    public class SomeFicture
    {
    }
}
]]&gt;
&lt;/script&gt;&lt;br /&gt;
4. Create a public method, optionaly suffix it with "Test" and decorate it with the [Test] attribute.&lt;br /&gt;
&lt;script class="brush: c-sharp" type="syntaxhighlighter"&gt;
&lt;![CDATA[ 
    [TestFixture]
    public class SomeFicture
    {
        [Test]
        public void HelloTest()
        {
            Assert.True(true);
        }
    }
]]&gt;
&lt;/script&gt;&lt;br /&gt;
5. Build your class library project. &lt;br /&gt;
6. You can run/dubug the unit test directly from studio if you have any plugin such as Resharper (VERY GOOD!!!) or TestDriven.Net or any other plugging. &lt;br /&gt;
&lt;span style="font-size: large;"&gt;nunit.exe&lt;/span&gt;&lt;br /&gt;
Start nunit.exe and create a new project. Then you add "assembly" or "VS Project", both will do. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_UqpPEshhhrk/S3_8vBQ7P2I/AAAAAAAAAE4/9R31tUGGE0Q/s1600-h/add.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ct="true" src="http://1.bp.blogspot.com/_UqpPEshhhrk/S3_8vBQ7P2I/AAAAAAAAAE4/9R31tUGGE0Q/s320/add.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can directly run the test from the gui provide it. &lt;br /&gt;
If you want to debugg then goto Visual studio and attach to the nunit process. Then set the desired breakpoints, kick the test you'd like from the NUnit app and you should hit your breakpoints.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_UqpPEshhhrk/S3_81e-2I6I/AAAAAAAAAFA/Zv2cUq8yCbw/s1600-h/run.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ct="true" src="http://1.bp.blogspot.com/_UqpPEshhhrk/S3_81e-2I6I/AAAAAAAAAFA/Zv2cUq8yCbw/s320/run.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;nunit-console.exe&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script class="brush: plain" type="syntaxhighlighter"&gt;
&lt;![CDATA[ 
C:\temp\NUnitSample\NUnitSample\bin\Release&gt;"C:\Program Files\NUnit 2.5.3\bin\net-2.0\nunit-console.exe" NUnitSample.dll
NUnit version 2.5.3.9345
Copyright (C) 2002-2009 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment -
   OS Version: Microsoft Windows NT 6.1.7600.0
  CLR Version: 2.0.50727.4927 ( Net 2.0.50727.4927 )

ProcessModel: Default    DomainUsage: Single
Execution Runtime: net-2.0.50727.4927
.
Tests run: 1, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.0440025 seconds
  Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0
]]&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;MSBuild&lt;/span&gt;&lt;br /&gt;
The easiest way is to use some 3rd party msbuild task such as the http://msbuildtasks.tigris.org/&lt;br /&gt;
In order to use the tasks in this project, you need to import the MSBuild.Community.Tasks.Targets files. If you installed the project with the msi installer, you can use the following.&lt;br /&gt;
&lt;script class="brush: xml" type="syntaxhighlighter"&gt;
&lt;![CDATA[ 
&lt;import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/&gt;
]]&gt;
&lt;/script&gt;&lt;br /&gt;
You can find info on msbuild at http://msbuildtasks.com/default.aspx&lt;br /&gt;
The task to call for NUnit is the following&lt;br /&gt;
&lt;script class="brush: xml" type="syntaxhighlighter"&gt;
&lt;![CDATA[ 
&lt;propertygroup&gt;
 &lt;bin-ToolPath&gt;c:\temp\NUnitSample\bin\debug&lt;/NUnit-ToolPath&gt;
&lt;/PropertyGroup&gt;
&lt;propertygroup&gt;
 &lt;NUnit-ToolPath&gt;C:\Program Files\NUnit 2.5.3\bin\net-2.0&lt;/NUnit-ToolPath&gt;
&lt;/PropertyGroup&gt;

&lt;nunit 
 Assemblies="$(bin-ToolPath)\NUnitSample.dll" 
 ToolPath="$(NUnit-ToolPath)" 
 DisableShadowCopy="true"
/&gt;
]]&gt;
&lt;/script&gt;&lt;br /&gt;
Save the xml file, let's assume you name it NUnitSample.proj and call it from MSBuild&lt;br /&gt;
&lt;script class="brush: plain" type="syntaxhighlighter"&gt;
&lt;![CDATA[ 
msbuild.exe NUnitSample.proj
]]&gt;
&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-3695407501954817027?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oWLVLnUX-OksPLUSDqxCIwlsJSI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oWLVLnUX-OksPLUSDqxCIwlsJSI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oWLVLnUX-OksPLUSDqxCIwlsJSI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oWLVLnUX-OksPLUSDqxCIwlsJSI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/xzO4LtwhzBo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/3695407501954817027/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2010/02/you-can-download-nunit-from-httpwww.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/3695407501954817027?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/3695407501954817027?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/xzO4LtwhzBo/you-can-download-nunit-from-httpwww.html" title="NUnit Hello Test" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_UqpPEshhhrk/S3_8aYgH4pI/AAAAAAAAAEw/NoF_qXV0pZc/s72-c/addreference.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2010/02/you-can-download-nunit-from-httpwww.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cDQX88eyp7ImA9WxBXGEQ.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-2240055969721046260</id><published>2010-01-22T11:11:00.007+01:00</published><updated>2010-01-30T23:37:50.173+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-30T23:37:50.173+01:00</app:edited><title>Video series: 3-Tier Pattern Architecture with Unity</title><content type="html">E00: Intro&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=qaL-q4q6OIA"&gt;http://www.youtube.com/watch?v=qaL-q4q6OIA&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
E01: set up the sample application&lt;br /&gt;
part1 &lt;a href="http://www.youtube.com/watch?v=mUwWU9IUpR0"&gt;http://www.youtube.com/watch?v=mUwWU9IUpR0&lt;/a&gt;&lt;br /&gt;
part2 &lt;a href="http://www.youtube.com/watch?v=75iSSZ7o0gs"&gt;http://www.youtube.com/watch?v=75iSSZ7o0gs&lt;/a&gt;&lt;br /&gt;
part3 &lt;a href="http://www.youtube.com/watch?v=qg2U6-kG9l0"&gt;http://www.youtube.com/watch?v=qg2U6-kG9l0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
E02 : Dependency Injection "object management" with Unity&lt;br /&gt;
part1: &lt;a href="http://www.youtube.com/watch?v=s5rd7mUu89A"&gt;http://www.youtube.com/watch?v=s5rd7mUu89A&lt;/a&gt;&lt;br /&gt;
part2: &lt;a href="http://www.youtube.com/watch?v=XmUQvqjsTYU"&gt;http://www.youtube.com/watch?v=XmUQvqjsTYU&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
E03 : component management "modularity" with Unity&lt;br /&gt;
E04 : configurability&lt;br /&gt;
E05 : testing/mocking&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_UqpPEshhhrk/S1rmkWSSO2I/AAAAAAAAAEg/avHZEvbid60/s1600-h/component.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" mt="true" src="http://4.bp.blogspot.com/_UqpPEshhhrk/S1rmkWSSO2I/AAAAAAAAAEg/avHZEvbid60/s400/component.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_UqpPEshhhrk/S1rmpUoShCI/AAAAAAAAAEo/vxhHe6lkgTI/s1600-h/class.png" imageanchor="1" style="clear: left; cssfloat: right; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" mt="true" src="http://4.bp.blogspot.com/_UqpPEshhhrk/S1rmpUoShCI/AAAAAAAAAEo/vxhHe6lkgTI/s400/class.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-2240055969721046260?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jDACsduhSSjPgD2cSv1Ew4rVrmo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jDACsduhSSjPgD2cSv1Ew4rVrmo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jDACsduhSSjPgD2cSv1Ew4rVrmo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jDACsduhSSjPgD2cSv1Ew4rVrmo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/HoCfGXf1Pv0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/2240055969721046260/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2010/01/video-series-3-tier-pattern.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2240055969721046260?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2240055969721046260?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/HoCfGXf1Pv0/video-series-3-tier-pattern.html" title="Video series: 3-Tier Pattern Architecture with Unity" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_UqpPEshhhrk/S1rmkWSSO2I/AAAAAAAAAEg/avHZEvbid60/s72-c/component.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2010/01/video-series-3-tier-pattern.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYEQH85fSp7ImA9WxBRF00.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-5606435919145954183</id><published>2009-12-06T18:35:00.005+01:00</published><updated>2010-01-05T16:41:41.125+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-05T16:41:41.125+01:00</app:edited><title>ArchitectureSamples-FunqUnity in C#4.0</title><content type="html">&lt;a href="http://www.deaddevssociety.com/2009/12/i-have-posted-very-nice-sample.html" style="display:none" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;br /&gt;
I have posted a very nice sample application on my googlecode:&lt;br /&gt;
&lt;a href="http://bakopanos.googlecode.com/svn/trunk/architecturesamples/FunqUnity"&gt;ArchitectureSamples-FunqUnity&lt;/a&gt;&lt;br /&gt;
You can checkout the code with tortoise. You need VS2010 Express or higher. Soon I will post a sibling to this sample also in VB.NET. All necessary binaries: Unity, NUnit and RhinoMocks are committed with the sample for your convenience.&lt;br /&gt;
&lt;br /&gt;
The sample application demonstrates the following architectural aspects:&lt;br /&gt;
. Domain Driven Design / Repository Pattern&lt;br /&gt;
. Modularity: Type safe registration of services &lt;br /&gt;
. Modularity: Xml registration of components&lt;br /&gt;
. Modularity: Inject xml configuration&lt;br /&gt;
. Dependency Injection&lt;br /&gt;
. Unit Tests / Mocks: isolate the repository the layer when testing the application layer&lt;br /&gt;
. Functional programming: use lambdas to isolate components in child containers&lt;br /&gt;
. Functional programming: use lambdas to isolate ADO.NET infrastructure calls (connections, commands)&lt;br /&gt;
. Functional programming: use lambdas to create a database technology factory (sqlce, oledb, ...)&lt;br /&gt;
&lt;br /&gt;
Please sent me comments... If I get enough input I will include more aspects such as:&lt;br /&gt;
. Presentation patterns: MVC (console apps)&lt;br /&gt;
. Presentation patterns: MVP (win apps and web forms apps)&lt;br /&gt;
. Presentation patterns: Presentation Model (wpf and silverlight)&lt;br /&gt;
. Data Access Guidance&lt;br /&gt;
. Web Services Layer, DTO pattern&lt;br /&gt;
. Plug-in patterns&lt;br /&gt;
. Domain Driven Design / aggregates, validation, rules&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-5606435919145954183?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SwvZc1E2piqZqxwHkroSEstk8fY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SwvZc1E2piqZqxwHkroSEstk8fY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SwvZc1E2piqZqxwHkroSEstk8fY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SwvZc1E2piqZqxwHkroSEstk8fY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/sm0f3xRfCHU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/5606435919145954183/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/12/i-have-posted-very-nice-sample.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/5606435919145954183?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/5606435919145954183?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/sm0f3xRfCHU/i-have-posted-very-nice-sample.html" title="ArchitectureSamples-FunqUnity in C#4.0" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/12/i-have-posted-very-nice-sample.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYAQXs_fCp7ImA9WxBRF00.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-8657345744170201503</id><published>2009-11-22T12:08:00.003+01:00</published><updated>2010-01-05T16:42:20.544+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-05T16:42:20.544+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="design patterns" /><title>List of most common Design Patterns</title><content type="html">&lt;a href="http://www.deaddevssociety.com/2009/11/list-of-most-common-design-patterns.html" style="display:none" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;br /&gt;
&lt;span xmlns=''&gt;&lt;p&gt;In &lt;a title='Software engineering' href='http://en.wikipedia.org/wiki/Software_engineering'&gt;software engineering&lt;/a&gt;, a design pattern is a general reusable solution to a commonly occurring problem in &lt;a title='Software design' href='http://en.wikipedia.org/wiki/Software_design'&gt;software design&lt;/a&gt;. A design pattern is not a finished design that can be transformed directly into &lt;a title='Code (computer programming)' href='http://en.wikipedia.org/wiki/Code_(computer_programming)'&gt;code&lt;/a&gt;. It is a description or template for how to solve a problem that can be used in many different situations. &lt;a title='Object-oriented' href='http://en.wikipedia.org/wiki/Object-oriented'&gt;Object-oriented&lt;/a&gt; design patterns typically show relationships and &lt;a title='Interaction' href='http://en.wikipedia.org/wiki/Interaction'&gt;interactions&lt;/a&gt; between &lt;a title='Class (computer science)' href='http://en.wikipedia.org/wiki/Class_(computer_science)'&gt;classes&lt;/a&gt; or &lt;a title='Object (computer science)' href='http://en.wikipedia.org/wiki/Object_(computer_science)'&gt;objects&lt;/a&gt;, without specifying the final application classes or objects that are involved. &lt;a href='http://en.wikipedia.org/wiki/Design_pattern_(computer_science)'&gt;Design pattern (computer science)&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;Below I have a list of most common design patterns.&lt;br /&gt;
&lt;/p&gt;&lt;h3&gt;Creational Patterns &lt;br /&gt;
&lt;/h3&gt;&lt;h4&gt;&lt;em&gt;Abstract Factory&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Creates an instance of several families of classes &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Builder&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Separates object construction from its representation &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Factory Method&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Creates an instance of several derived classes &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Prototype&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A fully initialized instance to be copied or cloned &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Singleton&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A class of which only a single instance can exist &lt;br /&gt;
&lt;/p&gt;&lt;h3&gt;Structural Patterns &lt;br /&gt;
&lt;/h3&gt;&lt;h4&gt;&lt;em&gt;Adapter&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Match interfaces of different classes &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Bridge&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Separates an object's interface from its implementation &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Composite&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A tree structure of simple and composite objects &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Decorator&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Add responsibilities to objects dynamically &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Façade&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A single class that represents an entire subsystem &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Flyweight&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A fine-grained instance used for efficient sharing &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Proxy&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;An object representing another object &lt;br /&gt;
&lt;/p&gt;&lt;h3&gt;Behavioral Patterns &lt;br /&gt;
&lt;/h3&gt;&lt;h4&gt;&lt;em&gt;Chain of Responsibility&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A way of passing a request between chains of objects &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Command&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Encapsulate a command request as an object &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Interpreter&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A way to include language elements in a program &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Iterator&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Sequentially access the elements of a collection &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Mediator&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Defines simplified communication between classes &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Memento&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Capture and restore an object's internal state &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Observer&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;A way of notifying change to a number of classes &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;State&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Alter an object's behavior when its state changes &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Strategy&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Encapsulates an algorithm inside a class &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Template Method&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Defer the exact steps of an algorithm to a subclass &lt;br /&gt;
&lt;/p&gt;&lt;h4&gt;&lt;em&gt;Visitor&lt;br /&gt;
&lt;/em&gt;&lt;/h4&gt;&lt;p&gt;Defines a new operation to a class without change&lt;br /&gt;
&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-8657345744170201503?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sJNkxHtN5wPrv2X0PdXaiGY6aV8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sJNkxHtN5wPrv2X0PdXaiGY6aV8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sJNkxHtN5wPrv2X0PdXaiGY6aV8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sJNkxHtN5wPrv2X0PdXaiGY6aV8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/gswFRvyXbVA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/8657345744170201503/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/11/list-of-most-common-design-patterns.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8657345744170201503?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8657345744170201503?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/gswFRvyXbVA/list-of-most-common-design-patterns.html" title="List of most common Design Patterns" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/11/list-of-most-common-design-patterns.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHQnYzeCp7ImA9WxNbFEQ.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-8223910378957462616</id><published>2009-11-17T22:09:00.003+01:00</published><updated>2009-11-17T22:15:33.880+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-17T22:15:33.880+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Unity" /><category scheme="http://www.blogger.com/atom/ns#" term="Functional" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Type safe named instances with Unity</title><content type="html">The following example demonstrates registering a named instance in Unity. The only problem here is that both the registration and resolving of the dependency is done using a string. Even using a static class to hardcode all strings in a kind-of type safe way gives us no guaranty that the developer will respect the convention.&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
IUnityContainer container = new UnityContainer();
//register
container.RegisterInstance&lt;string&gt;(ConnectionType.Ora, "#connstring#ora#", 
    new ContainerControlledLifetimeManager());
container.RegisterInstance&lt;string&gt;(ConnectionType.Sql, "#connstring#sql#", 
    new ContainerControlledLifetimeManager());
container.RegisterInstance&lt;string&gt;(ConnectionType.MsAccess, "#connstring#access#", 
    new ContainerControlledLifetimeManager());
//resolve
container.Resolve&lt;dataservice&gt;();
Console.ReadLine();
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
public static class ConnectionType
{
  public const string Ora = "Ora";
  public const string Sql = "Sql";
  public const string MsAccess = "MsAccess";
}
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
public class DataService
{
	public DataService([Dependency(ConnectionType.Ora)]string connectionString)
	{
		Console.WriteLine( connectionString );
		//create connection here...
	}
}
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
An alternate way of doing this would be using a delegate to resolve the instance giving a type safe argument such as an enumeration. So the registration in unity is a bit different...&lt;br /&gt;
&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
Func&lt;ConnectionType, string&gt; fConnString = delegate (ConnectionType connectionType)
{
    switch (connectionType)
    {
        //here you would really read the connection string
        //from a config file...
        case ConnectionType.Ora:
            return "#connstring#ora#";
        case ConnectionType.Sql:
            return "#connstring#sql#";
        case ConnectionType.MsAccess:
            return "#connstring#access#";
        default:
            return "#connstring#ora#";
    }
};

container.RegisterInstance&lt;Func&lt;ConnectionType, string&gt;&gt;(fConnString,
    new ContainerControlledLifetimeManager());

container.Resolve&lt;dataservice&gt;();

Console.ReadLine();
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Instead of a static class with constants we now have a type safe enumeration:&lt;br /&gt;
&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
public enum ConnectionType
{
    Ora, Sql, MsAccess
}
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
...and finally the client class that resolves the delegate:&lt;br /&gt;
&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
public class DataService
{
    public DataService(Func&lt;ConnectionType,string&gt; connectionString)
    {
        Console.WriteLine(connectionString(ConnectionType.Ora));
        //create connection here...
    }
}
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
In addition the actual resolving of the configuration string (typically read from a config) is done lazy... at the moment we really need it.&lt;br /&gt;
Finally we don't have ambiguity in registering in the container a type such as string, since we now mark the instance with an additional type (marker type).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-8223910378957462616?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7HbS-_dIqvtY4gQAY3PySeWDwAg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7HbS-_dIqvtY4gQAY3PySeWDwAg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7HbS-_dIqvtY4gQAY3PySeWDwAg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7HbS-_dIqvtY4gQAY3PySeWDwAg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/PyH4-JNuUY4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/8223910378957462616/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/11/type-safe-named-instances-with-unity.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8223910378957462616?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8223910378957462616?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/PyH4-JNuUY4/type-safe-named-instances-with-unity.html" title="Type safe named instances with Unity" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/11/type-safe-named-instances-with-unity.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CSH47fSp7ImA9WxNbEUQ.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-1049901744747927403</id><published>2009-11-12T12:42:00.004+01:00</published><updated>2009-11-14T12:59:29.005+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-14T12:59:29.005+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Implementing a .NET Framework Data Provider</title><content type="html">Five years ago I needed to implement a web app for a chemicals company, that was using data from SqlServer, Oracle, Documentum and Hummingbird. The problem was that at that time both Documentum and Hummingbird (document management systems) had no oledb nor .net providers available. So my data layer became a big mess due to the fact that some of my code was through ADO.NET and the rest was using proprietary API's from Documentum and Hummingbird. In addition having such code was very error prone and not testable at all, since those API's at that time were very low level. &lt;br /&gt;
The solution that I had found was to implement my own .NET Data Provider. I used as basis an example posted on msdn: &lt;a href="http://msdn.microsoft.com/en-us/library/4ksaf9z5(VS.71).aspx"&gt;Implementing a .NET Framework Data Provider&lt;/a&gt;.&lt;br /&gt;
The article provides a template implementation of a "Fake/Sample" data provider for an in-memory database "Fake/Sample". If you are investigating in this direction then following the above link will be very helpful.&lt;br /&gt;
For your convenience I have created a sample wpf app using this code. The code is an identical copy of the original; I have only made some improvements to make it up-to-date with .NET 4.0 since the initial article was written for .NET 1.0&lt;br /&gt;
You can checkout the sources using tortoise: &lt;a href="http://bakopanos.googlecode.com/svn/trunk/blog/DotNetDataProviderTemplate/"&gt;http://bakopanos.googlecode.com/svn/trunk/blog/DotNetDataProviderTemplate/&lt;/a&gt;&lt;br /&gt;
I used Visual Studio 2010 for this :-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
An overview of the code&lt;/b&gt;&lt;br /&gt;
The "fake/sample" database in the sample mimics a real world database that returns a cursor of the following structure:&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
internal class SampleDbResultSet
{
    public struct MetaData
    {
        public string name;
        public Type type;
        public int maxSize;
    }
    public int recordsAffected;
    public MetaData[] metaData;
    public object[,] data;
}
]]&gt;&lt;/script&gt;&lt;br /&gt;
The commands supported by the sample database are startwith "select " and startwith "update ". This is it: 2 hardcoded commands, no args or anything... &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The select command returns always the following resultset hardcoded in code: &lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: plain"&gt;&lt;![CDATA[ 
id  name  orderid  
1  Biggs  2001  
2  Brown  2121  
3  Jones  2543  
4  Smith  2772  
5  Tyler  3521  
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;The update command simply alters the (2,2) cell of the above table.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;Once you understand this sample you can implement your own wrapper for the database of your choice. I am about to implement a dataprovider for reading a large number of xml files...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-1049901744747927403?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Hqotl_pN2RUPP62TdWC_48f88Ac/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hqotl_pN2RUPP62TdWC_48f88Ac/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Hqotl_pN2RUPP62TdWC_48f88Ac/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hqotl_pN2RUPP62TdWC_48f88Ac/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/f6-CthNzfZw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/1049901744747927403/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/11/implementing-net-framework-data.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/1049901744747927403?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/1049901744747927403?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/f6-CthNzfZw/implementing-net-framework-data.html" title="Implementing a .NET Framework Data Provider" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/11/implementing-net-framework-data.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CSH47fSp7ImA9WxNbEUQ.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-4972168030733086842</id><published>2009-11-12T10:27:00.001+01:00</published><updated>2009-11-14T12:59:29.005+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-14T12:59:29.005+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Preventing Dialogs or Trace.Fail</title><content type="html">The System.Diagnostics provide a very nice infrastructure for logging. When you start an app, by default a DefaultTraceListener is added to the Debug.Listeners collection. The problem is that the DefaultTraceListener instance has the property AssertUiEnabled set to true. This will popup a nice message box, in case for example of this statement&lt;br /&gt;
&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
Debug.Assert(false);
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_UqpPEshhhrk/SvvUWcJM3MI/AAAAAAAAADE/SKga47dRwzc/s1600-h/DebugAssert.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" sr="true" src="http://3.bp.blogspot.com/_UqpPEshhhrk/SvvUWcJM3MI/AAAAAAAAADE/SKga47dRwzc/s320/DebugAssert.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
In winforms or console apps this is quite nice. Especially the possibility to attempt a retry ...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_UqpPEshhhrk/SvvUd42aN2I/AAAAAAAAADM/cdKdwVh8bO0/s1600-h/DebugAssertRetry.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" sr="true" src="http://3.bp.blogspot.com/_UqpPEshhhrk/SvvUd42aN2I/AAAAAAAAADM/cdKdwVh8bO0/s320/DebugAssertRetry.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
In case you need to disable this dialog: for a wpf app, for asp.net, for a wcf service... then you simply need to set the AssertUiEnabled property to false. In addition you can wire your own outputs...&lt;br /&gt;
&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ Debug.AutoFlush = true; 
//fix issue with messagebox in wpf
var debugListeners = Debug.Listeners.OfType&lt;DefaultTraceListener&gt;().ToArray(); 
foreach (var listener in debugListeners) 
{
  //If you reflector into the implementation of the DefaultTraceListener in the .NET Framework 
  //you'll see a call to AssertWrapper.ShowAssert (that should only happen if AssertUIEnabled 
  //is true and UI Permissions are available.) 
  //http://www.hanselman.com/blog/CommentView.aspx?guid=e4dc1e1c-3aca-4d4a-8b09-255a3e7a1e14
  listener.AssertUiEnabled = false;
}
//also to console...
Debug.Listeners.Add(new TextWriterTraceListener(Console.Out) { Name = "Console" });                         
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-4972168030733086842?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XQR6EbczDTYGDCrlVWxAgtUcNKU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XQR6EbczDTYGDCrlVWxAgtUcNKU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XQR6EbczDTYGDCrlVWxAgtUcNKU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XQR6EbczDTYGDCrlVWxAgtUcNKU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/UN59lqHYd30" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/4972168030733086842/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/11/preventing-dialogs-or-tracefail.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/4972168030733086842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/4972168030733086842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/UN59lqHYd30/preventing-dialogs-or-tracefail.html" title="Preventing Dialogs or Trace.Fail" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_UqpPEshhhrk/SvvUWcJM3MI/AAAAAAAAADE/SKga47dRwzc/s72-c/DebugAssert.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/11/preventing-dialogs-or-tracefail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CSH47fSp7ImA9WxNbEUQ.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-8251601538507419877</id><published>2009-11-11T22:26:00.006+01:00</published><updated>2009-11-14T12:59:29.005+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-14T12:59:29.005+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>How much does it cost to resolve with Unity?</title><content type="html">The following sample shows how expensive it is to resolve types using a DI container. On my notebook it showed the following:&lt;br /&gt;
&lt;br /&gt;
00:00:00.0040000&lt;br /&gt;
00:00:01.7080000&lt;br /&gt;
00:00:00.1640000&lt;br /&gt;
&lt;br /&gt;
As you can easily see resolving a type with Unity is something like at least 40 times slower. Is it worth it? I believe yes because you'll catch up with the performance on good design. &lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
using System;
using System.Linq;
using Microsoft.Practices.Unity;

static class Program
{
  static IUnityContainer container = new UnityContainer();

  static void Main(string[] args)
  {
    //create instance without unity
    var lc1 = DateTime.Now;

    for (int i = 0; i &lt; 100; i++)
    {
      new Log();
    }

    var lc2 = DateTime.Now;

    Console.WriteLine(lc2 - lc1);

    //create instance with unity using delegates
    var la1 = DateTime.Now;

    for (int i = 0; i &lt; 100; i++)
    {
      container.RegisterInstance&lt;Func&lt;ILog&gt;&gt;(i.ToString(),
        () =&gt; container.Resolve&lt;Log&gt;());
    }

    for (int i = 0; i &lt; 100; i++)
    {
      Func&lt;ILog&gt; fLog = container.Resolve&lt;Func&lt;ILog&gt;&gt;(i.ToString());
      ILog log = fLog();
    }

    var la2 = DateTime.Now;

    Console.WriteLine(la2 - la1);

    //create instance with unity
    var lb1 = DateTime.Now;

    for (int i = 0; i &lt; 100; i++)
    {
      container.RegisterType&lt;ILog, Log&gt;(i.ToString());
    }

    for (int i = 0; i &lt; 100; i++)
    {
      ILog log = container.Resolve&lt;ILog&gt;(i.ToString());
    }

    var lb2 = DateTime.Now;

    Console.WriteLine(lb2 - lb1);

    Console.ReadLine();
  }
}

public interface ILog { }
public class Log : ILog { }
]]&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-8251601538507419877?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/N8xbPjvCI77j-cBPhygNkb7ePro/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N8xbPjvCI77j-cBPhygNkb7ePro/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/N8xbPjvCI77j-cBPhygNkb7ePro/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N8xbPjvCI77j-cBPhygNkb7ePro/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/xynIro9Rkm0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/8251601538507419877/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/11/how-much-does-it-cost-to-resolve-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8251601538507419877?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8251601538507419877?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/xynIro9Rkm0/how-much-does-it-cost-to-resolve-with.html" title="How much does it cost to resolve with Unity?" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/11/how-much-does-it-cost-to-resolve-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGQncyfSp7ImA9WxNbEUw.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-2259611568969526615</id><published>2009-11-11T11:09:00.000+01:00</published><updated>2009-11-13T12:40:23.995+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T12:40:23.995+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Hints: migration from VS2008SP1 -&gt; VS2010Ultimate</title><content type="html">1. The 2nd line of the project file has being changed &lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;3.5&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Build&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;4.0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Build&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When you try to open the migrated project with VS2008 you simply get the following warning:&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;Project file contains ToolsVersion=&amp;quot;4.0&amp;quot;, which is not supported by this version of MSBuild. Treating the project as if it had ToolsVersion=&amp;quot;3.5&amp;quot;.&lt;/pre&gt;&lt;br /&gt;...all the rest work fine! &lt;/div&gt;&lt;br /&gt;2. A whole set of new elements has being added to the default PropertyGroup of the project; all these are not breaking when you try to open the migrated project with VS2008.&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpgradeFlags&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpgradeFlags&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;OldToolsVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;3.5&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;OldToolsVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UpgradeBackupLocation&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PublishUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://localhost/Utilities/&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PublishUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;InstallFrom&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Web&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;InstallFrom&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateMode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Foreground&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateMode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateInterval&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;7&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateInterval&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateIntervalUnits&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Days&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateIntervalUnits&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdatePeriodically&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdatePeriodically&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateRequired&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;UpdateRequired&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;MapFileExtensions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;MapFileExtensions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ApplicationRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ApplicationRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ApplicationVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.0.0.%2a&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ApplicationVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;IsWebBootstrapper&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;IsWebBootstrapper&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UseApplicationTrust&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;UseApplicationTrust&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;3. A new element has being added on the PropertyGroup of each configuration; also nothing breaking... VS2008SP1 ignores them. &lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;CodeAnalysisRuleSet&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;AllRules.ruleset&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;CodeAnalysisRuleSet&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;4. A new ItemGroup have being added; also nothing breaking... VS2008SP1 ignores them.&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Net.Client.3.5&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;False&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;.NET Framework 3.5 SP1 Client Profile&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Net.Framework.3.5.SP1&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;False&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;.NET Framework 3.5 SP1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.VisualBasic.PowerPacks.10.0&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;False&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft Visual Basic PowerPacks 10.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Windows.Installer.3.1&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;False&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Visible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Windows Installer 3.1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProductName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Install&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;BootstrapperPackage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;5. If your projects have being set to &amp;quot;Treat warnings as errors&amp;quot; then VS2010 is much more sensitive, especially to xmldocumentation mistakes.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-2259611568969526615?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/adjl9aq-SVH_gBuLNB3P8B_F5ao/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/adjl9aq-SVH_gBuLNB3P8B_F5ao/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/adjl9aq-SVH_gBuLNB3P8B_F5ao/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/adjl9aq-SVH_gBuLNB3P8B_F5ao/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/FADUUnBB-Hg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/2259611568969526615/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/11/hints-migration-from-vs2008sp1.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2259611568969526615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2259611568969526615?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/FADUUnBB-Hg/hints-migration-from-vs2008sp1.html" title="Hints: migration from VS2008SP1 -&amp;gt; VS2010Ultimate" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/11/hints-migration-from-vs2008sp1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGQncyfSp7ImA9WxNbEUw.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-2263583016709450691</id><published>2009-11-11T10:26:00.000+01:00</published><updated>2009-11-13T12:40:23.995+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T12:40:23.995+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Fail: VS2010 Setup</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_UqpPEshhhrk/SvqDGQ9pRuI/AAAAAAAAAC8/fFSt306CaZ0/s1600-h/fail_vs2010_setup.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_UqpPEshhhrk/SvqDGQ9pRuI/AAAAAAAAAC8/fFSt306CaZ0/s320/fail_vs2010_setup.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-2263583016709450691?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tYLxOvO9u0Rr3g_6-Y3wScFg5yU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tYLxOvO9u0Rr3g_6-Y3wScFg5yU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tYLxOvO9u0Rr3g_6-Y3wScFg5yU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tYLxOvO9u0Rr3g_6-Y3wScFg5yU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/jHMcBcrghzE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/2263583016709450691/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/11/fail-vs2010-setup.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2263583016709450691?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2263583016709450691?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/jHMcBcrghzE/fail-vs2010-setup.html" title="Fail: VS2010 Setup" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_UqpPEshhhrk/SvqDGQ9pRuI/AAAAAAAAAC8/fFSt306CaZ0/s72-c/fail_vs2010_setup.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/11/fail-vs2010-setup.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CSH47fSp7ImA9WxNbEUQ.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-7921134330764305725</id><published>2009-11-09T11:14:00.003+01:00</published><updated>2009-11-14T12:59:29.005+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-14T12:59:29.005+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Functional programming using Unity</title><content type="html">C# 3.0 comes with functional programming capabilities that can become very handy if combined with a dependency injection framework as Unity.&lt;br /&gt;
Take a look at the following example. The function ‘doThis’ can be register in the unity container just like any other instance of a type. At the time of registration the function ‘doThis’ isn’t called yet. It’s not even called at the time of resolving the function ‘doThis’ from the container. This idea is very useful when doing lazy things with Unity.&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;//create a unity container
IUnityContainer container = new UnityContainer();   
//define a function
Func&amp;lt;bool&amp;gt; doThis = delegate 
{ 
Debugger.Break(); 
return true; 
}; 
//register the function as instance
//function will not execute during registration 
container.RegisterInstance(doThis);
//resolve the function from the container
//function will not execute during the resolving
var f = container.Resolve&amp;lt;Func&amp;lt;bool&amp;gt;&amp;gt;();
//will execute here:-) 
f();
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-7921134330764305725?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uryqWvNAqjmUCiUBBBT352CZOz8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uryqWvNAqjmUCiUBBBT352CZOz8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uryqWvNAqjmUCiUBBBT352CZOz8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uryqWvNAqjmUCiUBBBT352CZOz8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/H8z3maIUgpo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7921134330764305725?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7921134330764305725?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/H8z3maIUgpo/functional-programming-using-unity.html" title="Functional programming using Unity" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/11/functional-programming-using-unity.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04DRHk5cCp7ImA9WxNbEUQ.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-7131670813448565023</id><published>2009-11-03T21:20:00.003+01:00</published><updated>2009-11-14T12:59:35.728+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-14T12:59:35.728+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>UnityContainer Lifetime Management extension methods</title><content type="html">The following code snippet&amp;#160; registers the type MySingletonObject to the IMyObject interface as a singleton. The problem is that in order to get the UnityContainer type you need a references to the &lt;strong&gt;Microsoft.Practices.Unity.dll&lt;/strong&gt; and in order to get the ContainerControlledLifetimeManager type you will need a reference to the &lt;strong&gt;Microsoft.Practices.ObjectBuilder2.dll&lt;/strong&gt;  &lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
// Register a default (un-named) type mapping with a singleton lifetime
myContainer.RegisterType&lt;IMyObject, MySingletonObject&gt;(new ContainerControlledLifetimeManager());
// Following code will return a singleton instance of MySingletonObject
// Container will take over lifetime management of the object
myContainer.Resolve&lt;IMyObject&gt;();
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;div&gt;Now if the case is that you need more that ContainerControlledLifetimeManager type from &lt;strong&gt;Microsoft.Practices.ObjectBuilder2.dll &lt;/strong&gt;then it’s worth the reference… if not then the following extension method could help you do the same as before without the need for a reference to &lt;strong&gt;Microsoft.Practices.ObjectBuilder2.dll &lt;/strong&gt;(in a large project you will most likely have some base class library dll with common and shared types; create the extension method there…)&lt;/div&gt;&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
public static void RegisterSingleton&lt;TFrom, TTo&gt;(this IUnityContainer container)     
where TTo : TFrom
{    
	container.RegisterType&lt;TFrom, TTo&gt;(new SingletonLifetimeManager());
}
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Using the extension method the code now looks like this:&lt;/div&gt;&lt;br /&gt;
&lt;script type="syntaxhighlighter" class="brush: c-sharp"&gt;&lt;![CDATA[ 
// Register a default (un-named) type mapping with a singleton lifetime
myContainer.RegisterSingleton&lt;IMyObject, MySingletonObject&gt;();
// Following code will return a singleton instance of MySingletonObject
// Container will take over lifetime management of the object
myContainer.Resolve&lt;IMyObject&gt;();
]]&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Same idea can be applied for&amp;#160; ExternallyControlledLifetimeManager. &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Note that Chris Tavares (from the p&amp;amp;p team) has mentioned in the p&amp;amp;p summit 2009 last month that the next release of Unity will have the &lt;strong&gt;Microsoft.Practices.ObjectBuilder2.dll &lt;/strong&gt;most likely merged into the Unity assembly. &lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-7131670813448565023?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/463EckeW9MeU_D-i21VrGB8htZ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/463EckeW9MeU_D-i21VrGB8htZ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/463EckeW9MeU_D-i21VrGB8htZ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/463EckeW9MeU_D-i21VrGB8htZ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/b0d8Qr1D-x4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7131670813448565023?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7131670813448565023?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/b0d8Qr1D-x4/unitycontainer-lifetime-management.html" title="UnityContainer Lifetime Management extension methods" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/11/unitycontainer-lifetime-management.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8AQno7cCp7ImA9WxNUGUo.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-8567412850862113688</id><published>2009-11-03T14:33:00.001+01:00</published><updated>2009-11-11T22:10:43.408+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-11T22:10:43.408+01:00</app:edited><title>NUnit 2.4.* to NUnit 2.5.* migration / Rhino.Mocks</title><content type="html">&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: inherit;"&gt;NUnit 2.5 has changed quite substantially compared with the previous 2.4.8 release, as outlined in the&amp;nbsp;&lt;/span&gt;&lt;a href="http://nunit.com/index.php?p=releaseNotes&amp;amp;r=2.5" style="color: #698d73;"&gt;&lt;span style="font-family: inherit;"&gt;NUnit 2.5 release notes&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: inherit;"&gt;The problems that I had when migrating tests to NUnit 2.5 were:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Assert.IsInstanceOfType&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;has been replaced by &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Assert.IsInstanceOf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;NUnit.Framework.SyntaxHelpers&lt;/span&gt;&lt;/span&gt; namespace no longer exists.&amp;nbsp;All classes that were in this namespace have been moved to the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;NUnit.Framework&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt; namespace&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;Many alias&amp;nbsp;conflicts&amp;nbsp;if using&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Rhino.Mocks&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;using RIs = Rhino.Mocks.Constraints.Is;&lt;br /&gt;
using NIs =&amp;nbsp;NUnit.Framework.Is;&lt;br /&gt;
using RProperty = Rhino.Mocks.Constraints.Property;&lt;br /&gt;
using NProperty =&amp;nbsp;NUnit.Framework.Property;&lt;br /&gt;
using RAssert = NUnit.Framework.Assert;&lt;br /&gt;
using NAssert = NUnit.Framework.Assert;&lt;br /&gt;
using NList =&amp;nbsp;NUnit.Framework.List;&lt;br /&gt;
using RList = Rhino.Mocks.Constraints.List;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Has.Length(2);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;&amp;nbsp;has been replaced by&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Has.Length.EqualTo(2));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Has.Count(1);&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;has been replaced by&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;Has.Count.EqualTo(1);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Has.Property("Length", 20)&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;has been replaced by&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;Has.Property("Length")&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Arial, Helvetica; line-height: 20px;"&gt;Error&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;243&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Warning as Error: 'NUnit.Framework.Text' is obsolete: 'Use Is class for string constraints'&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;Good luck migrating&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-8567412850862113688?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/40JQ3FJqN-KCNzYWdQhaJdD-K3M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/40JQ3FJqN-KCNzYWdQhaJdD-K3M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/40JQ3FJqN-KCNzYWdQhaJdD-K3M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/40JQ3FJqN-KCNzYWdQhaJdD-K3M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/t4wVqvToHKM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8567412850862113688?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8567412850862113688?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/t4wVqvToHKM/nunit-24-to-nunit-25-migration.html" title="NUnit 2.4.* to NUnit 2.5.* migration / Rhino.Mocks" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/11/nunit-24-to-nunit-25-migration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGQncyfSp7ImA9WxNbEUw.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-3938321134584549528</id><published>2009-10-17T04:20:00.007+02:00</published><updated>2009-11-13T12:40:23.995+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T12:40:23.995+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Developing a Solution Generator (EasySolutions)</title><content type="html">&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;span style="font-size: medium;"&gt;Considerations for large projects (Dynamic solutions)&lt;/span&gt;&lt;/h1&gt;The information is  based on practices learned from my 4 year tenure as SW architect of a large (60  developers) team. I will show you how to get the most out of Visual Studio 2008  to help improve the effectiveness of your team-based software development using  a tool that I am about to develop &lt;a class="externalLink" href="http://www.codeplex.com/EasySolutions"&gt;EasySolutions&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
A large project typically differs  from a smaller project:  &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;You need to partition your project into multiple (100+) Visual Studio  projects.  &lt;/li&gt;
&lt;li&gt;You shouldn’t have to wait for several minutes before your IDE is responsive  due to the fact that your solution is getting too big.&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;&lt;span style="font-size: medium;"&gt;Building your projects for development&lt;/span&gt;&lt;/h1&gt;Something that I have learned is  that you should never use solutions to build your project. Solutions are evil,  really evil. You need them in order to work with Visual Studio, but that’s about  it. You should never use them elsewhere and you should never commit solutions  with the sources. Instead you should use MSBuild to build your project and you  should dynamically generate the required solutions using a tool. Developing such  a tool is no big deal. I will drop some bits explaining the idea and hopefully  drop a first version of the tool in the next month or two. &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;What you  will get meanwhile is the outcome of some work I did waiting for my flight to  Zurich returning from the p&amp;amp;p summit!&lt;/i&gt;&lt;br /&gt;
&lt;h1&gt;&lt;span style="font-size: medium;"&gt;Building a Solution Generator &lt;/span&gt;&lt;/h1&gt;This idea is very appealing since the  projects files are in xml and usually also in MSBuild format thus they are very  simply to parse.&lt;br /&gt;
&lt;br /&gt;
The basic flow of such a tool is the  following:&lt;br /&gt;
&lt;br /&gt;
Search for project files (example *.csproj)  recursively.&lt;br /&gt;
Load with XDocument each project and search for project  references.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;var projectReferences = 
from element in xdoc.Descendants(xNameSpace + "ProjectReference")
select Path.GetFullPath(Path.Combine(projectDirName, (string) element.Attribute("Include")));
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Create an object graph with all the project references per project  and serialize it to xml for convenience. You will use this cache in order to  avoid unnecessarily parsing the project files again. The schema of your xml is  based on the following fragment…&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;[XmlRoot(ElementName = "Projects")]
public class Projects : List&lt;project&gt; { }

public class ProjectBase
{
  [XmlAttribute]
  public Guid ProjectGuid { get; set; }
}

public class Project : ProjectBase
{
  public Project() { }

  public List&lt;projectbase&gt; ProjectReferences { get; set; }
}
&lt;/pre&gt;&lt;br /&gt;
You can now start querying that Projects instance typically using  Linq. Generating a solution file is quite easy; the solution schema is very  simple. {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") is the id of csprojects…  Similarly you find id’s for all projects types supported. &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: plain"&gt;Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApplication1", "ConsoleApplication1\ConsoleApplication1.csproj", "{CD06FCD6-9F1A-4736-A034-925C24F628C3}"
EndProject
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
What you get from such tool:  &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;You are able to open only the necessary projects each time.  &lt;/li&gt;
&lt;li&gt;You are able to make structural changes to your projects (add, rename,  delete projects) without the fear that you will break other solutions.  &lt;/li&gt;
&lt;li&gt;You don’t need to store the solution files in the source  control.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;h1&gt;&lt;span style="font-size: medium;"&gt;Getting the tool one step&amp;nbsp;further&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;Another point of pain is synchronizing all project properties across many studio projects (Some examples the output dirs should much, the build configurations should much, flags such generate doc and warnings should much and so on). The first problem is to find out the mistakes and there are tools around that will do this like BuildCop. The second problem is to go and manually alter all mistakes... fun job to do in a large project don't you agree? Well we could reuse the above idea, craft a simple gui to maintain project settings from all projects in one view and then directly save the changes into the visual studio project files. After all it's quite simple to alter XML...&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-3938321134584549528?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DqkGCaB2fOC3ZY2zQVxYFBphWsQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DqkGCaB2fOC3ZY2zQVxYFBphWsQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DqkGCaB2fOC3ZY2zQVxYFBphWsQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DqkGCaB2fOC3ZY2zQVxYFBphWsQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/J4pKZr2lhpk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/3938321134584549528?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/3938321134584549528?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/J4pKZr2lhpk/developing-solution-generator.html" title="Developing a Solution Generator (EasySolutions)" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/10/developing-solution-generator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MQncyfSp7ImA9WxNWFUo.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-7261066227434087600</id><published>2009-09-11T14:03:00.002+02:00</published><updated>2009-10-15T04:49:43.995+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-15T04:49:43.995+02:00</app:edited><title>Validation for Windows 7 is coming soon!</title><content type="html">I am ALWAYS so glad to install new releases of Microsoft Windows. So I have installed the Windows 7 RTM. Today (11.09.2009)&amp;nbsp;I got a very bad surprise! Windows poped up a warning that my copy is not genuine with a link to validate my copy of Windows 7. So I try to validate at &lt;a href="http://www.microsoft.com/genuine/"&gt;http://www.microsoft.com/genuine/&lt;/a&gt; .... and during the validation process I get the following message:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;Validation for Windows 7 is coming soon!&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;Microsoft constantly strives to update our technologies to help protect our customers from the risks of counterfeit software. Right now, we are working hard to improve the way that validation checks to see whether Windows 7 running on your PC is genuine.&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;Shortly after Windows 7 is available for purchase beginning October 22, you will be able to validate Windows 7 running on your PC to help you determine that it’s genuine.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
The problem is that some win7 features have being meanwhile disabled:-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-7261066227434087600?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aQ9uNDnP6YkpXgjfGhyIoZhGC-o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aQ9uNDnP6YkpXgjfGhyIoZhGC-o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aQ9uNDnP6YkpXgjfGhyIoZhGC-o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aQ9uNDnP6YkpXgjfGhyIoZhGC-o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/uO2I865H02s" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7261066227434087600?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7261066227434087600?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/uO2I865H02s/microsoft-is-ridiculous.html" title="Validation for Windows 7 is coming soon!" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/09/microsoft-is-ridiculous.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGQncyfSp7ImA9WxNbEUw.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-7380473953675954955</id><published>2009-09-04T17:51:00.002+02:00</published><updated>2009-11-13T12:40:23.995+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T12:40:23.995+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Visual Studio 2008 SP1 on Windows 7</title><content type="html">I have installed VS2008 on Win7 and it works just great. The only problem that I had was related to the VSTO.&lt;br /&gt;&lt;br /&gt;Knowledge base number: KB949258MSI (s) (F0:5C) [18:27:43:876]: Windows Installer installed an update. Product Name: Visual Studio Tools for the Office system 3.0 Runtime. Product Version: 9.0.30729. Product Language: 0. Manufacturer: Microsoft Corporation. Update Name: KB949258. Installation success or error status: 1603.&lt;br /&gt;&lt;br /&gt;To overcome follow these steps.&lt;br /&gt;&lt;br /&gt;1. Install VS2008&lt;br /&gt;2. Install the&lt;br /&gt;Make sure that before running the Microsoft Visual Studio Tools for the Microsoft Office System (version 3.0 Runtime) Service Pack 1 (x86)&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d8eb4921-891a-4b5e-973f-0b96e6ccf376&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=d8eb4921-891a-4b5e-973f-0b96e6ccf376&amp;amp;DisplayLang=en&lt;/a&gt;&lt;br /&gt;3. Install the VS2008 SP1&lt;br /&gt;&lt;br /&gt;This should work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-7380473953675954955?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EiAPP-sqqDESbvUavQzdErCO740/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EiAPP-sqqDESbvUavQzdErCO740/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EiAPP-sqqDESbvUavQzdErCO740/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EiAPP-sqqDESbvUavQzdErCO740/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/uXWuNhhSa5U" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7380473953675954955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7380473953675954955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/uXWuNhhSa5U/visual-studio-2008-sp1-on-windows-7.html" title="Visual Studio 2008 SP1 on Windows 7" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/09/visual-studio-2008-sp1-on-windows-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUAQ3gzfSp7ImA9WxNaE0w.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-5012101381862906441</id><published>2009-08-09T21:27:00.002+02:00</published><updated>2009-11-27T11:04:02.685+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-27T11:04:02.685+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><title>Install Windows 7 on a vhd file</title><content type="html">&lt;p&gt;Please have in mind that you can only boot from vhd files on the Ultimate and Enterprise editions of Windows 7. The instructions bellow work on all editions but you will be only able to logon if you are running Ultimate or Enterprise due to licensing issues. &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Boot from the Windows 7 dvd and select “repair your computer”.&lt;/li&gt;
&lt;li&gt;Select “use recovery tools”&lt;/li&gt;
&lt;li&gt;Select “command prompt”&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;x:\sources&amp;gt; diskpart   &lt;br /&gt;
diskpart&amp;gt; create vdisk file=&amp;quot;c:\images\win7.vhd&amp;quot; maximum=64000     &lt;br /&gt;
diskpart&amp;gt;select vdisk file=&amp;quot;c:\images\win7.vhd&amp;quot;     &lt;br /&gt;
diskpart&amp;gt;attach vdisk    &lt;br /&gt;
diskpart&amp;gt;exit    &lt;br /&gt;
x:\sources&amp;gt;setup&lt;/p&gt;&lt;p&gt;Good luck!&lt;/p&gt;&lt;br /&gt;
also read: http://blogs.msdn.com/knom/archive/2009/04/07/windows-7-vhd-boot-setup-guideline.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-5012101381862906441?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n8j4hwX900hNriRQ0SKpk_N2XqA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8j4hwX900hNriRQ0SKpk_N2XqA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n8j4hwX900hNriRQ0SKpk_N2XqA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8j4hwX900hNriRQ0SKpk_N2XqA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/2YVZGvI0Gnc" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/5012101381862906441?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/5012101381862906441?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/2YVZGvI0Gnc/install-windows-7-on-vhd-file.html" title="Install Windows 7 on a vhd file" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/08/install-windows-7-on-vhd-file.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEMQ308fSp7ImA9WxJaFkk.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-610363045039233368</id><published>2009-08-07T12:10:00.002+02:00</published><updated>2009-08-07T13:31:22.375+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-07T13:31:22.375+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software download" /><title>Windows 7 Compare editions</title><content type="html">&lt;a href="http://www.microsoft.com/windows/windows-7/compare-editions/starter.aspx"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;more info&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Windows 7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Starter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Windows 7 Starter makes small notebook PCs easier to use because it puts less between you and what you want to do—less waiting, less clicking, less hassle connecting to networks. Windows 7 Starter combines the latest in reliability and responsiveness with the familiarity and compatibility of Windows.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Windows 7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Home Premium&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make the things you do every day easier with improved desktop navigation.     &lt;/li&gt;&lt;li&gt;Start programs faster and more easily, and quickly find the documents you use most often.      &lt;/li&gt;&lt;li&gt;Make your web experience faster, easier and safer than ever with Internet Explorer 8.      &lt;/li&gt;&lt;li&gt;Watch, pause, rewind, and record TV on your PC.     &lt;/li&gt;&lt;li&gt;Easily create a home network and connect your PCs to a printer with HomeGroup.  &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Windows 7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Professional&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Home Premium&lt;/li&gt;&lt;li&gt;Run many Windows XP productivity programs in Windows XP Mode.      &lt;/li&gt;&lt;li&gt;Connect to company networks easily and more securely with Domain Join.     &lt;/li&gt;&lt;li&gt;In addition to full-system Backup and Restore found in all editions, you can back up to a home or business network.  &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Windows 7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ultimate&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Home Premium + Professional&lt;/li&gt;&lt;li&gt;Help protect data on your PC and portable storage devices against loss or theft with BitLocker.     &lt;/li&gt;&lt;li&gt;Work in the language of your choice and switch between any of 35 languages.     &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-610363045039233368?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VQfkiIZ2bnRuWmn_2ZVrz-gmD8U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VQfkiIZ2bnRuWmn_2ZVrz-gmD8U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VQfkiIZ2bnRuWmn_2ZVrz-gmD8U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VQfkiIZ2bnRuWmn_2ZVrz-gmD8U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/Pq_6KBx4kQw" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/610363045039233368?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/610363045039233368?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/Pq_6KBx4kQw/windows-7-compare-editions.html" title="Windows 7 Compare editions" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/08/windows-7-compare-editions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAERXszfSp7ImA9WxJaFkk.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-802430463333172648</id><published>2009-08-07T11:06:00.002+02:00</published><updated>2009-08-07T13:31:44.585+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-07T13:31:44.585+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><title>A Developer's Introduction to Windows Workflow Foundation (WF4) in .NET 4 Beta 1</title><content type="html">A fantastic article on WF .NET 4&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee342461.aspx"&gt;A Developer's Introduction to Windows Workflow Foundation (WF4) in .NET 4 Beta 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Introduces a significant amount of change from the previous versions of the technology that shipped as part of .NET 3.0 and 3.5.&lt;/li&gt;&lt;li&gt;Revisited core of the programming model, runtime and tooling.&lt;/li&gt;&lt;li&gt;Increased performance and productivity.&lt;/li&gt;&lt;li&gt;Backwards compatibility. The new framework components are found primarily in the System.Activities.* assemblies while the backwards compatible framework components are found in the System.Workflow.* assemblies.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-802430463333172648?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SzA8prS01jjaIuo979qmzSQs7HY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SzA8prS01jjaIuo979qmzSQs7HY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SzA8prS01jjaIuo979qmzSQs7HY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SzA8prS01jjaIuo979qmzSQs7HY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/-kH3jqiccg8" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/802430463333172648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/802430463333172648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/-kH3jqiccg8/developers-introduction-to-windows.html" title="A Developer's Introduction to Windows Workflow Foundation (WF4) in .NET 4 Beta 1" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/08/developers-introduction-to-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAERXszfip7ImA9WxJaFkk.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-8908462345244736791</id><published>2009-08-07T11:03:00.002+02:00</published><updated>2009-08-07T13:31:44.586+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-07T13:31:44.586+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><title>A Developer’s Introduction to Windows Communication Foundation (WCF4) in .NET 4 Beta 1</title><content type="html">A very nice article on WCF .NET 4&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee354381.aspx"&gt;A Developer’s Introduction to Windows Communication Foundation (WCF) .NET 4 Beta 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The article describes the main feature areas. These feature areas summarize most of what’s new in WCF and they highlight the top-level opportunities offered by this release of the framework.&lt;br /&gt;&lt;br /&gt;&lt;table class="MsoNormalTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;Feature Area&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;Simplified Configuration&lt;/p&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;Simplification of the WCF configuration section through   support for default endpoints, binding and behavior configurations. These   changes make it possible to host configuration-free services, greatly   simplifying the developer experience for the most common WCF scenarios.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;Discovery&lt;/p&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;New framework support for both ad-hoc and managed service   discovery behaviors, which conform to the standard WS-Discovery protocol.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;Routing Service&lt;/p&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;New framework support for a configurable routing service   that you can use in your WCF solutions. Provides features for content-based   routing, protocol bridging, and error handling.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;REST Improvements&lt;/p&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;Enhances the WCF 3.5 Web programming model with some   additional features that simplify REST service development.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;Workflow Services&lt;/p&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p class="MsoNormal"&gt;Rich new framework support for integrating WCF with WF to   implement declarative long-running workflow services. This new programming   model gives you the best both frameworks have to offer (WCF &amp;amp; WF).&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-8908462345244736791?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/soKtN1WGk_3Qv_ypYLtVnNDFuYY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/soKtN1WGk_3Qv_ypYLtVnNDFuYY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/soKtN1WGk_3Qv_ypYLtVnNDFuYY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/soKtN1WGk_3Qv_ypYLtVnNDFuYY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/l3QnMrTpxTs" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8908462345244736791?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/8908462345244736791?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/l3QnMrTpxTs/very-nice-article-on-wcf.html" title="A Developer’s Introduction to Windows Communication Foundation (WCF4) in .NET 4 Beta 1" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><feedburner:origLink>http://www.deaddevssociety.com/2009/08/very-nice-article-on-wcf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QGQHg7fip7ImA9WxJQEU0.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-1256534178469518680</id><published>2009-05-23T22:08:00.001+02:00</published><updated>2009-05-23T22:08:41.606+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-23T22:08:41.606+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software download" /><title>JetBrains ReSharper 4.5</title><content type="html">&lt;p&gt;JetBrains is providing the “best” productivity add-on around. Visual Studio is simply not the same without R#. There is a small penalty in performance of-course but it’s absolutely worth it. Bare in mind that the solution wide analysis feature should not be turned on all the time for large solutions (50+ projects) because it slows down studio a lot.&lt;/p&gt;  &lt;p&gt;The is a 30 day fully functional trial available: &lt;a title="http://www.jetbrains.com/resharper/download/index.html" href="http://www.jetbrains.com/resharper/download/index.html"&gt;http://www.jetbrains.com/resharper/download/index.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Features: &lt;a title="http://www.jetbrains.com/resharper/features/" href="http://www.jetbrains.com/resharper/features/"&gt;http://www.jetbrains.com/resharper/features/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html"&gt;Code Analysis&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html#On-the-fly_Error_Detection"&gt;On-the-fly Error Detection&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html#Multilevel_Code_Inspection"&gt;Multilevel Code Inspection&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html#Quick-Fixes"&gt;Quick-Fixes&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html#Navigating_Between_Highlighted_Code_Items"&gt;Navigating Between Code Highlights&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html#Solution-Wide_Analysis"&gt;Solution-Wide Error Analysis&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html#Value_Analysis"&gt;Value Analysis&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_analysis.html#Annotated_Framework"&gt;Annotated Framework&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html"&gt;Navigation &amp;amp; Search&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Navigate_from_Here"&gt;Navigate from Here&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Go_to_Symbol"&gt;'Go to' Features&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Find_Usages"&gt;Usage Search&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#CamelHumps"&gt;CamelHumps&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Type_Hierarchy"&gt;Type Hierarchy&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#File_Structure"&gt;File Structure&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Find_ReferencedDependent_Code"&gt;Find Referenced/Dependent Code&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Collapse_All_in_Solution_Explorer"&gt;Collapse All in Solution Explorer&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Locate_in_Solution_Explorer"&gt;Locate in Solution Explorer&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#View_Recent_Files"&gt;View Recent Items&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#Stack_Trace_Explorer"&gt;Stack Trace Explorer&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/navigation_search.html#To-do_Explorer"&gt;To-do Explorer&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/refactoring.html"&gt;Refactorings&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Using_Code_Refactorings"&gt;Using Code Refactorings&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Change_Signature"&gt;Change Signature&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Convert_Abstract_Class_to_Interface"&gt;'Convert' Refactorings&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Copy_Type"&gt;Copy Type&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Encapsulate_Field"&gt;Encapsulate Field&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Extract_Class_from_Parameters"&gt;'Extract' Refactorings&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Inline_Field"&gt;'Inline' Refactorings&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Introduce_Field"&gt;'Introduce' Refactorings&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Make_Method_Non-StaticNon-Shared"&gt;Make Method Static/Non-Static&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Move_Static_Member"&gt;'Move' Refactorings&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Pull_Members_Up"&gt;Pull/Push Members Up/Down&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Rename"&gt;Rename&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Replace_Constructor_with_Factory_Method"&gt;Replace Constructor with Factory Method&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Safe_Delete"&gt;Safe Delete&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_refactoring.html#Use_Base_Type_where_Possible"&gt;Use Base Type where Possible&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_generation.html"&gt;Code Generation&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_generation.html#Create_from_Usage"&gt;Create from Usage&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_generation.html#Generate_Type_Members"&gt;Generate Type Members&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_generation.html#ImplementOverride_Methods"&gt;Implement/Override Methods&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_generation.html#Configure_Generation_Options"&gt;Configure Generation Options&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html"&gt;Coding Assistance&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Syntax_Highlighting"&gt;Syntax Highlighting&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Context_Actions"&gt;Context Actions&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Code_Completion"&gt;Code Completion&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Complete_Statement"&gt;Complete Statement&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Extended_Naming_Style_Configuration"&gt;Extended Naming Style Configuration&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Parameter_Info"&gt;Parameter Info&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Highlight_Matching_Delimiters"&gt;Highlight Matching Delimiters&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Importing_Namespaces"&gt;Importing Namespaces&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Auto-insertion_of_Delimiters"&gt;Auto-insertion of Delimiters&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Code_Reordering"&gt;Code Reordering&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Quick_Documentation"&gt;Quick Documentation&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#CommentUncomment_Code"&gt;Comment/Uncomment Code&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Highlight_Current_Line"&gt;Highlight Current Line&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#ExtendShrink_Selection"&gt;Extend/Shrink Selection&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Duplicate_Line_or_Selection"&gt;Duplicate Line or Selection&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/coding_assistance.html#Multiple_Entries_Clipboard"&gt;Multiple Entries Clipboard&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html"&gt;Code Cleanup&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html"&gt;Using Code Cleanup&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html#Code_Formatting"&gt;Code Formatting&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html#Optimizing_Namespace_Import_Directives"&gt;Optimizing Namespace Import Directives&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html#Removing_Code_Redundancies_C#_only"&gt;Removing Code Redundancies&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html#Migrating_to_C#_30"&gt;Migrating to C# 3.0&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html#Reordering_Type_Members_C#_only"&gt;Reordering Type Members&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_formatting.html#Code_Style_Configuration_and_Sharing"&gt;Code Style Configuration and Sharing&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_templates.html"&gt;Code Templates&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_templates.html#Live_Templates"&gt;Live Templates, Surround Templates, File Templates&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/code_templates.html#Customizing_Configuring_and_Sharing_Templates"&gt;Customizing, Configuring and Sharing Templates&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/unit_testing.html"&gt;Unit Testing&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/unit_testing.html#Running_and_debugging_tests"&gt;Running and Debugging Tests&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/unit_testing.html#Unit_Test_Explorer"&gt;Unit Test Explorer&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/unit_testing.html#Unit_Test_Sessions"&gt;Unit Test Sessions&lt;/a&gt;&lt;/dd&gt;&lt;dd&gt;&lt;a href="http://www.jetbrains.com/resharper/features/unit_testing.html#Profiling_unit_tests_with_dotTrace_Profiler"&gt;Profiling Unit Tests with dotTrace Profiler&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/cross-language.html"&gt;Cross-Language Functionality&lt;/a&gt; &lt;/dt&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.jetbrains.com/resharper/features/nant_msbuild_script.html"&gt;Build Scripts&lt;/a&gt; &lt;/dt&gt;&lt;dt&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-1256534178469518680?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0qVawWhdNpkFTMqVwbU7tIZKCA8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0qVawWhdNpkFTMqVwbU7tIZKCA8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0qVawWhdNpkFTMqVwbU7tIZKCA8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0qVawWhdNpkFTMqVwbU7tIZKCA8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/hT9b505izPI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/1256534178469518680/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/05/jetbrains-resharper-45.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/1256534178469518680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/1256534178469518680?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/hT9b505izPI/jetbrains-resharper-45.html" title="JetBrains ReSharper 4.5" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/05/jetbrains-resharper-45.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkECQXk9cSp7ImA9WxJaFkk.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-544349148118518746</id><published>2009-05-23T21:14:00.002+02:00</published><updated>2009-08-07T13:31:00.769+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-07T13:31:00.769+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software download" /><title>Visual Studio 2010 Beta 1 (MSDN Subscriptions)</title><content type="html">&lt;p&gt;&lt;strong&gt;Visual Studio 2010 Professional Beta 1 (x86) - DVD (English)     &lt;br /&gt;&lt;/strong&gt;Includes: Professional; 05-18-2009   &lt;br /&gt;File Name: en_visual_studio_2010_professional_edition_beta_1_x86_dvd.iso   &lt;br /&gt;Date Posted (UTC): 5/18/2009 10:03:17 AM   &lt;br /&gt;&lt;br /&gt;Available to Levels: MSDN OS (VL); VS Pro with MSDN Pro (VL); VS Pro with MSDN Premium (Empower); MSDN OS (Retail); Developer AA; VS Pro with MSDN Pro (Retail); MSDN Enterprise; MSDN Universal (Retail); VSTS Team Suite (VL); VSTS Architecture (VL); VSTS Development (VL); VSTS Test (VL); VS Pro with MSDN Premium (VL); MSDN Universal (VL); VSTS Database (VL); VS Pro with MSDN Premium (Retail); VSTS Test (Retail); VSTS Development (Retail); VSTS Architecture (Retail); VSTS Team Suite (Retail); VSTS Database (Retail); BizSpark Admin; BizSpark; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visual Studio Team Foundation Server 2010 Beta 1 (x86 and x64) - DVD (English)&lt;/strong&gt;   &lt;br /&gt;Includes: Team Foundation Server; 05-18-2009   &lt;br /&gt;File Name: en_visual_studio_team_foundation_server_2010_beta_1_x86_x64_dvd.iso   &lt;br /&gt;Date Posted (UTC): 5/18/2009 10:02:33 AM   &lt;br /&gt;&lt;br /&gt;Available to Levels: MSDN OS (VL); VS Pro with MSDN Pro (VL); VS Pro with MSDN Premium (Empower); MSDN OS (Retail); Developer AA; VS Pro with MSDN Pro (Retail); MSDN Enterprise; MSDN Universal (Retail); VSTS Team Suite (VL); VSTS Architecture (VL); VSTS Development (VL); VSTS Test (VL); VS Pro with MSDN Premium (VL); MSDN Universal (VL); VSTS Database (VL); VS Pro with MSDN Premium (Retail); VSTS Test (Retail); VSTS Development (Retail); VSTS Architecture (Retail); VSTS Team Suite (Retail); VSTS Database (Retail); BizSpark Admin; BizSpark; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visual Studio Team System 2010 Team Suite Beta 1 (x86) - DVD (English)&lt;/strong&gt;   &lt;br /&gt;Includes: Team System; 05-18-2009   &lt;br /&gt;File Name: en_visual_studio_team_system_2010_team_suite_beta_1_x86_dvd.iso   &lt;br /&gt;Date Posted (UTC): 5/18/2009 10:02:03 AM   &lt;br /&gt;&lt;br /&gt;Available to Levels: MSDN OS (VL); VS Pro with MSDN Pro (VL); VS Pro with MSDN Premium (Empower); MSDN OS (Retail); Developer AA; VS Pro with MSDN Pro (Retail); MSDN Enterprise; MSDN Universal (Retail); VSTS Team Suite (VL); VSTS Architecture (VL); VSTS Development (VL); VSTS Test (VL); VS Pro with MSDN Premium (VL); MSDN Universal (VL); VSTS Database (VL); VS Pro with MSDN Premium (Retail); VSTS Test (Retail); VSTS Development (Retail); VSTS Architecture (Retail); VSTS Team Suite (Retail); VSTS Database (Retail); BizSpark Admin; BizSpark; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-544349148118518746?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ba5a9qYZ8IKHu0zVtDouZPD-E_0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ba5a9qYZ8IKHu0zVtDouZPD-E_0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ba5a9qYZ8IKHu0zVtDouZPD-E_0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ba5a9qYZ8IKHu0zVtDouZPD-E_0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/71pyAmhAKz8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/544349148118518746/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/05/visual-studio-2010-beta-1-msdn.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/544349148118518746?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/544349148118518746?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/71pyAmhAKz8/visual-studio-2010-beta-1-msdn.html" title="Visual Studio 2010 Beta 1 (MSDN Subscriptions)" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/05/visual-studio-2010-beta-1-msdn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAGRXY-fip7ImA9WxJaFkk.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-9100022358441822851</id><published>2009-05-22T20:11:00.001+02:00</published><updated>2009-08-07T13:32:04.856+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-07T13:32:04.856+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>ASP.NET Portal Starter Kit</title><content type="html">The ASP.NET Portal Starter Kit demonstrates how you can use ASP.NET and the .NET Framework to build a dynamic portal application. The ASP.NET Portal Starter Kit offers all the functionality of typical portal applications.  &lt;br /&gt;It's developed in c# 3.0 \ .NET 3.5.   &lt;br /&gt;&lt;img title="Portal_Big.bmp" alt="Portal_Big.bmp" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=28412" /&gt; &lt;img title="Logoneg.gif" alt="Logoneg.gif" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29015" /&gt;  &lt;br /&gt;&lt;a title="http://www.codeplex.com/ASPNETPortal" href="http://www.codeplex.com/ASPNETPortal"&gt;http://www.codeplex.com/ASPNETPortal&lt;/a&gt;  &lt;h3&gt;Project Scope &lt;/h3&gt; &lt;b&gt;&lt;u&gt;Re-engineering the original project using up-to-date technologies&lt;/u&gt;&lt;/b&gt;  &lt;h3&gt;Features&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Dynamic Portal Infrastructure &lt;/li&gt;    &lt;li&gt;10 basic portal modules for common types of content &lt;/li&gt;    &lt;li&gt;2 extra portal modules: RSS Feed and Wiki &lt;i&gt;&lt;b&gt;(postponed)&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;A &amp;quot;pluggable&amp;quot; framework that is simple to extend with custom portal modules &lt;/li&gt;    &lt;li&gt;Online administration of portal layout, content and security &lt;/li&gt;    &lt;li&gt;XML based definition of portal layout &lt;/li&gt;    &lt;li&gt;Database based definition of portal layout &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;Roles-based security for viewing content, editing content, and administering the portal &lt;/li&gt;    &lt;li&gt;Full mobile support using the ASP.NET Mobile Controls &lt;/li&gt;    &lt;li&gt;Multiple database support easily extensible to support more databases &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;Web service layer ASMX and WCF &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;Smart Client to support Admins and power users &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Technologies and Design Approaches Demonstrated&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;.NET 2.0 \ .NET 3.5 &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;Web Client Software Factory &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;Object Builder &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;Smart Client Software Factory &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;ASP.NET Mobile Controls &lt;/li&gt;    &lt;li&gt;Three-tier architecture with ASP.NET &lt;/li&gt;    &lt;li&gt;Role Based Security &lt;/li&gt;    &lt;li&gt;Layered architecture &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;      &lt;ul&gt;       &lt;li&gt;&lt;i&gt;Vertical&lt;/i&gt;: Data\Business\Presentation &lt;/li&gt;        &lt;li&gt;&lt;i&gt;Horizontal&lt;/i&gt;: Services, Framework&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Design Patterns &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;NUnit Tests &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt;    &lt;li&gt;Master Pages, SiteMaps &amp;amp; Themes &lt;img title="new.jpg" alt="new.jpg" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ASPNETPortal&amp;amp;DownloadId=29249" /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-9100022358441822851?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jD64bamtS15q3Bo_elbeEWdPvy4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jD64bamtS15q3Bo_elbeEWdPvy4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jD64bamtS15q3Bo_elbeEWdPvy4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jD64bamtS15q3Bo_elbeEWdPvy4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/TZIWhJKCB2o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/9100022358441822851/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/05/aspnet-portal-starter-kit.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/9100022358441822851?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/9100022358441822851?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/TZIWhJKCB2o/aspnet-portal-starter-kit.html" title="ASP.NET Portal Starter Kit" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/05/aspnet-portal-starter-kit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4HRXc7eyp7ImA9WxJQEEw.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-7616602966778394508</id><published>2009-05-21T21:55:00.001+02:00</published><updated>2009-05-22T20:28:54.903+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-22T20:28:54.903+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="design patterns (creational)" /><title>Design Pattern: Factory Method</title><content type="html">&lt;p&gt;The factory method pattern deals with the problem of creating objects without specifying the exact class of object that will be created. The factory method design pattern handles this problem by defining a separate method for creating the objects, whose subclasses can then override to specify the derived type of object that will be created.    &lt;br /&gt;More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;/p&gt;  &lt;p&gt;This sample requires the following to be installed: Visual Studio 2008. You can checkout a read-only copy of this sample using tortoise from:    &lt;br /&gt;&lt;a title="http://bakopanos.googlecode.com/svn/trunk/designpatterns/GangOfFour.FactoryMethod" href="http://bakopanos.googlecode.com/svn/trunk/designpatterns/GangOfFour.FactoryMethod"&gt;http://bakopanos.googlecode.com/svn/trunk/designpatterns/GangOfFour.FactoryMethod&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A very simple example: we’ll create a DataFactory class that will be able to map a IDataReader to an Object. &lt;font face="Georgia"&gt;The DataFactory is abstract since the subclasses will override the Map method implementation.&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;img src="http://bakopanos.googlecode.com/svn/trunk/designpatterns/GangOfFour.FactoryMethod/Untitled.bmp" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public abstract class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataFactory&lt;/span&gt;&amp;lt;T&amp;gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;where &lt;/span&gt;T : &lt;span style="color: blue"&gt;class&lt;/span&gt;, &lt;span style="color: blue"&gt;new&lt;/span&gt;()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public abstract &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt; List();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;protected &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt; List(&lt;span style="color: blue"&gt;string &lt;/span&gt;cmd)&lt;br /&gt;    {            &lt;br /&gt;        &lt;span style="color: blue"&gt;var &lt;/span&gt;items = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt;();&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;conn = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlCeConnection&lt;/span&gt;(&lt;span style="color: #a31515"&gt;@&amp;quot;Data Source=Database1.sdf&amp;quot;&lt;/span&gt;))&lt;br /&gt;        {&lt;br /&gt;            conn.Open();&lt;br /&gt;            &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;command = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlCeCommand&lt;/span&gt;(cmd, conn))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: blue"&gt;var &lt;/span&gt;reader=command.ExecuteReader(&lt;span style="color: #2b91af"&gt;CommandBehavior&lt;/span&gt;.CloseConnection);&lt;br /&gt;                &lt;span style="color: blue"&gt;while &lt;/span&gt;(reader.Read())&lt;br /&gt;                {&lt;br /&gt;                    items.Add(Map(reader));&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;items;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;public abstract &lt;/span&gt;T Map(&lt;span style="color: #2b91af"&gt;IDataRecord &lt;/span&gt;reader);            &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We need to map the database Table Titles to the object Title.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt; &lt;br /&gt;&lt;span style="color: blue"&gt;public class&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Title      &lt;br /&gt;&lt;/span&gt;{ &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public int &lt;/span&gt;Id { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; } &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public string&lt;/span&gt;Name { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; } &lt;br /&gt;} &lt;br /&gt;&lt;font face="Georgia"&gt;The TitleDataFactory class subclasses the DataFactory and overrides the Map method.      &lt;br /&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TitleDataFactory &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;DataFactory&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Title&lt;/span&gt;&amp;gt;&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;public override &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Title&lt;/span&gt;&amp;gt; List()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;List(&lt;span style="color: #a31515"&gt;&amp;quot;select * from titles&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;public override &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Title &lt;/span&gt;Map(&lt;span style="color: #2b91af"&gt;IDataRecord &lt;/span&gt;reader)            &lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue"&gt;int &lt;/span&gt;id = (&lt;span style="color: blue"&gt;int&lt;/span&gt;) reader[&lt;span style="color: #a31515"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;];&lt;br /&gt;        &lt;span style="color: blue"&gt;string &lt;/span&gt;name = reader[&lt;span style="color: #a31515"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;] &lt;span style="color: blue"&gt;as string&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: blue"&gt;var &lt;/span&gt;item = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Title &lt;/span&gt;{Id = id, Name = name};&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;item;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Georgia"&gt;Although the sample is far from a proper ORM implementation it demonstrates well the Factory Method design pattern. &lt;br /&gt;If you are looking for your next ORM tool then this is the wrong place, consider:&lt;br /&gt;EntLib, Spring, ActiveRecord, NHibernate&lt;br /&gt;LinqToSql, EntityFramework, DataSet&lt;br /&gt;any of the many commercial frameworks such as IdeaBlade, DevExpress XPO and so on…&lt;br /&gt;&lt;/font&gt;&lt;font face="Georgia"&gt;Some sample client code to demonstrate how to use the DataFactory&lt;br /&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;Entry point into console application.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;static void &lt;/span&gt;Main()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Title&lt;/span&gt;&amp;gt; list = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TitleDataFactory&lt;/span&gt;().List();&lt;br /&gt;                &lt;br /&gt;    &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;title &lt;span style="color: blue"&gt;in &lt;/span&gt;list)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(title.Name);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: green"&gt;// Wait for user&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadKey();&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-7616602966778394508?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kUC6Ufzoi-FHXa0gZ6FCE_mC04s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kUC6Ufzoi-FHXa0gZ6FCE_mC04s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kUC6Ufzoi-FHXa0gZ6FCE_mC04s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kUC6Ufzoi-FHXa0gZ6FCE_mC04s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/uL7MwxyMQ4s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/7616602966778394508/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/05/design-pattern-factory-method.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7616602966778394508?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/7616602966778394508?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/uL7MwxyMQ4s/design-pattern-factory-method.html" title="Design Pattern: Factory Method" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/05/design-pattern-factory-method.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDRXs5eSp7ImA9WxJRGU4.&quot;"><id>tag:blogger.com,1999:blog-725851120415703179.post-2164181973232874840</id><published>2009-05-20T22:22:00.001+02:00</published><updated>2009-05-21T21:44:34.521+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-21T21:44:34.521+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>C# Generics and Extension methods to build a simple iterator</title><content type="html">&lt;p&gt;In this example we focus on the type safe collection classes and show how to build a simple iterator.    &lt;br /&gt;&lt;/p&gt; This sample requires the following to be installed: Visual Studio 2008. You can checkout a read-only copy of this sample using tortoise from:  &lt;br /&gt;&lt;a title="http://bakopanos.googlecode.com/svn/trunk/csharpsamples/GenericSamples/ForEachIteratoren" href="http://bakopanos.googlecode.com/svn/trunk/csharpsamples/GenericSamples/ForEachIteratoren"&gt;http://bakopanos.googlecode.com/svn/trunk/csharpsamples/GenericSamples/ForEachIteratoren&lt;/a&gt;  &lt;br /&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;ForEachIterators&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;interface &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IAction&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;void &lt;/span&gt;Action();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;static class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Program&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;public static void &lt;/span&gt;ForEachI&amp;lt;T&amp;gt;(&lt;span style="color: blue"&gt;this &lt;/span&gt;T[] array) &lt;span style="color: blue"&gt;where &lt;/span&gt;T : &lt;span style="color: #2b91af"&gt;IAction&lt;br /&gt;        &lt;/span&gt;{&lt;br /&gt;            &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(T elem &lt;span style="color: blue"&gt;in &lt;/span&gt;array)&lt;br /&gt;            {&lt;br /&gt;                elem.Action();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyString &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;IAction&lt;br /&gt;        &lt;/span&gt;{&lt;br /&gt;            &lt;span style="color: blue"&gt;readonly string &lt;/span&gt;_s;&lt;br /&gt;            &lt;span style="color: blue"&gt;public &lt;/span&gt;MyString(&lt;span style="color: blue"&gt;string &lt;/span&gt;s) { _s = s; }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;public void &lt;/span&gt;Action()&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;I'm a string with {0}&amp;quot;&lt;/span&gt;, _s);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public delegate void &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Action&lt;/span&gt;&amp;lt;T&amp;gt;(T obj);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public static void &lt;/span&gt;ForEach&amp;lt;T&amp;gt;(&lt;span style="color: blue"&gt;this &lt;/span&gt;T[] array, &lt;span style="color: #2b91af"&gt;Action&lt;/span&gt;&amp;lt;T&amp;gt; action)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;if &lt;/span&gt;(action != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(T elem &lt;span style="color: blue"&gt;in &lt;/span&gt;array)&lt;br /&gt;                {&lt;br /&gt;                    action(elem);&lt;br /&gt;                }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: green"&gt;//leave private &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;static void &lt;/span&gt;StringAction(&lt;span style="color: blue"&gt;this string &lt;/span&gt;s)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;a String {0}&amp;quot;&lt;/span&gt;, s);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: green"&gt;//leave private &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;static void &lt;/span&gt;IntAction(&lt;span style="color: blue"&gt;this int &lt;/span&gt;i)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;an Integer {0}&amp;quot;&lt;/span&gt;, i);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;static void &lt;/span&gt;Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;arr0 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyString&lt;/span&gt;[2];&lt;br /&gt;            arr0[0] = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyString&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Hallo&amp;quot;&lt;/span&gt;);&lt;br /&gt;            arr0[1] = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyString&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;);&lt;br /&gt;            arr0.ForEachI();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;arr1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;World&amp;quot; &lt;/span&gt;};&lt;br /&gt;            arr1.ForEach(StringAction);&lt;br /&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;arr2 = &lt;span style="color: blue"&gt;new &lt;/span&gt;[] { 2, 6, 3, 9 };&lt;br /&gt;            arr2.ForEach(IntAction);&lt;br /&gt;            arr2.ForEach(IntAction); &lt;span style="color: green"&gt;//Delegate inference&lt;br /&gt;            &lt;/span&gt;arr2.ForEach(i =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;lambda: {0}&amp;quot;&lt;/span&gt;, i));&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/725851120415703179-2164181973232874840?l=www.deaddevssociety.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tymiiJi0EW4-uW6Jl9aBqnVEKwY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tymiiJi0EW4-uW6Jl9aBqnVEKwY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tymiiJi0EW4-uW6Jl9aBqnVEKwY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tymiiJi0EW4-uW6Jl9aBqnVEKwY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BakopanosKonstantinos/~4/iRBZYBjbN70" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.deaddevssociety.com/feeds/2164181973232874840/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.deaddevssociety.com/2009/05/c-generics-and-extension-methods-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2164181973232874840?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/725851120415703179/posts/default/2164181973232874840?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BakopanosKonstantinos/~3/iRBZYBjbN70/c-generics-and-extension-methods-to.html" title="C# Generics and Extension methods to build a simple iterator" /><author><name>Bakopanos Konstantinos</name><uri>http://www.blogger.com/profile/16981058303396266630</uri><email>cbakopanos@yahoo.com</email><gd:extendedProperty name="OpenSocialUserId" value="10113056319040962159" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.deaddevssociety.com/2009/05/c-generics-and-extension-methods-to.html</feedburner:origLink></entry></feed>
