<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Elegant Code &#187; .Net 3.5</title>
	<atom:link href="http://elegantcode.com/tag/net-35/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Sat, 11 Feb 2012 04:39:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>WPF startup vs NCover</title>
		<link>http://elegantcode.com/2008/05/21/wpf-startup-vs-ncover/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wpf-startup-vs-ncover</link>
		<comments>http://elegantcode.com/2008/05/21/wpf-startup-vs-ncover/#comments</comments>
		<pubDate>Wed, 21 May 2008 20:42:20 +0000</pubDate>
		<dc:creator>Chris Brandsma</dc:creator>
				<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[Tools and Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/05/21/wpf-startup-vs-ncover/</guid>
		<description><![CDATA[An interesting issue I&#8217;ve been trying to figure out lately, why is WPF so blasted slow on my laptop?&#160; How slow?&#160; It takes 90 seconds to open a Hello World WPF app.&#160; Heck, it takes 90 seconds to load a WPF window with no &#8220;Hello World&#8221; or anything else for that matter.&#160; But to make [...]]]></description>
			<content:encoded><![CDATA[<p>An interesting issue I&#8217;ve been trying to figure out lately, why is WPF so blasted slow on my laptop?&nbsp; How slow?&nbsp; It takes 90 seconds to open a Hello World WPF app.&nbsp; Heck, it takes 90 seconds to load a WPF window with no &#8220;Hello World&#8221; or anything else for that matter.&nbsp; But to make life more interesting, if I was to load a WPF app that actually does something, like on of the Prism samples, it also takes 90 seconds to load.</p>
<p>I talked with <a href="http://elegantcode.com/about/scott-nichols/">one of my buddies who is a budding WPF expert</a> who told me I was crazy and needed to get a psychologist.&nbsp; He is probably right.&nbsp; But something was telling me that this was a system problem, not a WPF problem.&nbsp; But for the life of me I wasn&#8217;t seeing it.</p>
<p>Every programmer needs a toolbox.&nbsp; Turns out there are several performance analyzing tools for WPF that ship with the Windows SDK.&nbsp; One of them is the <a href="http://wpf.netfx3.com/files/folders/developer/entry10880.aspx">WPF Performance Suite</a>.&nbsp; While the tool is really cool&#8230;it didn&#8217;t help at all.&nbsp; If you want to check the performance of your WPF application while it is RUNNING, this tool will be great.</p>
<p>My problem was start up.&nbsp; Here was the breakdown: 60 seconds before I saw a WPF window, 30 seconds before anything displayed.&nbsp; After that, everything ran fine.&nbsp; Time for a different tool.&nbsp; Namely: <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx">Process Explorer</a> from <a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx">SysInternal</a> (via Microsoft.com).</p>
<p>I was able to find my Hello World WPF application in Process Explorer (on my system, all .Net processes are colored yellow), then displayed the lower pane to display the DLLs used by the process.&nbsp; (BTW: I just confirmed that Windows Live Writer is a .Net application).</p>
<p>I found one interesting dll that was referenced: <a href="http://www.ncover.com/">NCover</a>.&nbsp; A while back I had installed a trial version of the commercial product (this was not the <a href="http://ncover.sourceforge.net/">open source version</a>). I have no idea what it was doing there, but it was there.&nbsp; In fact, it was referenced in every WPF application that I loaded &#8212; including WPF applications that I did not write, like the <a href="http://windowsclient.net/wpf/starter-kits/sce/sce-get-more-details.aspx">Subscription Center</a>.</p>
<p>Long story made only slightly longer, I uninstalled NCover and now everything loads in about 10 seconds (a nine fold improvement), but I still don&#8217;t know what NCover was doing.&nbsp; If you know, please let me know.&nbsp; </p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/05/21/wpf-startup-vs-ncover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I&#8217;m looking forward to in .net 3.5 Service Pack 1</title>
		<link>http://elegantcode.com/2008/05/13/what-im-looking-forward-to-in-net-35-service-pack-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-im-looking-forward-to-in-net-35-service-pack-1</link>
		<comments>http://elegantcode.com/2008/05/13/what-im-looking-forward-to-in-net-35-service-pack-1/#comments</comments>
		<pubDate>Tue, 13 May 2008 21:02:47 +0000</pubDate>
		<dc:creator>Chris Brandsma</dc:creator>
				<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/05/13/what-im-looking-forward-to-in-net-35-service-pack-1/</guid>
		<description><![CDATA[So .net 3.5 service pack 1 has been announced, but not released, with a large host of new features.&#160; (Isn&#8217;t a service pack just supposed to fix things, not release a host of new stuff&#8230;not that I mind). What am I looking forward to: * Visual Studio Speed improvements.&#160; Nuff said.&#160; Please keep making it [...]]]></description>
			<content:encoded><![CDATA[<p>So .net 3.5 service pack 1 has been announced, but not released, with a large host of new features.&nbsp; (Isn&#8217;t a service pack just supposed to fix things, not release a host of new stuff&#8230;not that I mind).</p>
<h2>What am I looking forward to:</h2>
<p>* <strong>Visual Studio Speed improvements</strong>.&nbsp; Nuff said.&nbsp; Please keep making it faster.</p>
<p>* <strong>SQL Server 2008 features in LINQ 2 SQL. </strong> I just did a big demo of SQL Server 2008 T-SQL changes for <a href="http://www.bsdg.org">BSDG</a>, and the one thing I was not able to do was really show off the new features.&nbsp; How do you use the HierarchyID in LINQ2SQL right now?&nbsp; With stored procedures.&nbsp; I&#8217;m hoping this release will fix that.</p>
<p>Also, this pretty well determines when SP1 will release: at the same time as SQL Server 2008.&nbsp; If you listen to <a href="http://www.dotnetrocks.com/default.aspx?showNum=340">.Net Rock show 340</a>, they say that a SQL Server 2008 release is imminent.&nbsp; Which could mean anything.</p>
<p>* <strong>Routing for ASP.Net.</strong> We aren&#8217;t talking about Routing for ASP.Net MVC Framework, but regular old WebForms.&nbsp; I love this.</p>
<p>* <strong>Cold start performance improvements.</strong>&nbsp; One part of working with .net that kind of sucks is the cold start.&nbsp;&nbsp; Someone boots up their computer and starts your application, which take forever to load.&nbsp; Then the next time you load, it boots right up.&nbsp;&nbsp; According to Scott Guthrie the are seeing up to a 40% performance increase.</p>
<h2>What I&#8217;m interested in:</h2>
<p>Here are some new features I&#8217;m interested in, but I don&#8217;t expect to jump on right away.</p>
<p>* <strong>Dynamic Data.</strong> Much has been <a href="http://www.hanselman.com/blog/PuttingASPNETDynamicDataIntoContext.aspx">said about this already</a>.&nbsp; I will be looking into it.&nbsp; There is scaffolding support in there, as well as a lot more.&nbsp; Plus it can be used with multiple ORM solutions.&nbsp; I believe LLBLGen will have support, and <a href="http://www.hanselman.com/blog/VS2008AndNet35SP1BetaShouldYouFearThisRelease.aspx">Scott Hanselman said</a> NHibernate support was also being worked on.&nbsp; I suspect SubSonic in there somewhere as well.</p>
<p>* <strong>Entities Framework.</strong>&nbsp; I&#8217;m always looking for better ways of getting data from a database.&nbsp; While this doesn&#8217;t seem better than some of my current tools (NHibernate, SubSonic, LINQ2SQL), I&#8217;m keeping an eye on this one.&nbsp; If you read down <a href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx">Scott Guthrie&#8217;s blog comments</a>, you will also see that Oracle will be supported with Entities Framework.</p>
<p>* <strong>Microsoft AJAX Stuff.</strong> I&#8217;m using JQuery for more of this right now, but there are some enhancements to the ScriptManager coming.&nbsp; And JQuery or no JQuery, I still use the ScriptManager.</p>
<p>* <strong>Improved Client Distribution.</strong> While I mainly blog about Asp.Net, I also work with WinForms.&nbsp; And in WinForms, .Net Framework distribution is always a hot topic.&nbsp; Better bootstrappers, improved ClickOnce.&nbsp; Give me everything you got.&nbsp; One key feature: they made it smaller.</p>
<p>* <strong>More WinForms Controls.</strong>&nbsp; These are actually some of the Visual Basic.Net PowerPack controls.&nbsp; Thank you.</p>
<p>* <strong>WPF Stuff.</strong>&nbsp; I having had the opportunity to really get into WPF yet, but the time will come.</p>
<p>&nbsp;</p>
<p>OK, that is all that I&#8217;m going to list.&nbsp; There really is a lot out there for a Service Pack.&nbsp; But one quick note: this is beta.&nbsp; And this is one beta I&#8217;m not installing yet &#8212; but I will as soon as it is released.&nbsp; </p>
<p>If you are looking for more information, check out these articles:</p>
<p>Scott Guthrie: <a title="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx">http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx</a></p>
<p>Brad Abrams: <a title="http://blogs.msdn.com/brada/archive/2008/05/05/visual-studio-2008-and-net-framework-3-5-sp1-beta.aspx" href="http://blogs.msdn.com/brada/archive/2008/05/05/visual-studio-2008-and-net-framework-3-5-sp1-beta.aspx">http://blogs.msdn.com/brada/archive/2008/05/05/visual-studio-2008-and-net-framework-3-5-sp1-beta.aspx</a></p>
<p>Scott Hanselman: <a title="http://www.hanselman.com/blog/VS2008AndNet35SP1BetaShouldYouFearThisRelease.aspx" href="http://www.hanselman.com/blog/VS2008AndNet35SP1BetaShouldYouFearThisRelease.aspx">http://www.hanselman.com/blog/VS2008AndNet35SP1BetaShouldYouFearThisRelease.aspx</a></p>
<p>Tim Sneath: <a title="http://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-release-of-windows-presentation-foundation.aspx" href="http://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-release-of-windows-presentation-foundation.aspx">http://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-release-of-windows-presentation-foundation.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/05/13/what-im-looking-forward-to-in-net-35-service-pack-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My VSTO Presentation</title>
		<link>http://elegantcode.com/2008/04/30/my-vsto-presentation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=my-vsto-presentation</link>
		<comments>http://elegantcode.com/2008/04/30/my-vsto-presentation/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 19:25:04 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/30/my-vsto-presentation/</guid>
		<description><![CDATA[On Monday I was privileged to participate in the Microsoft Visual Studio 2008 product launch by presenting a session on VSTO with Microsoft Architect Evangelist, Bruce Kyle. This is a fairly light presentation intended to introduce some new C# language features, VSTO integration features, SharePoint 2007 work flows, Office extension projects for Visual Studio, and [...]]]></description>
			<content:encoded><![CDATA[<p>On Monday I was privileged to participate in the Microsoft Visual Studio 2008 product launch by presenting a session on <a href="http://msdn2.microsoft.com/en-us/office/aa905533.aspx" target="_blank">VSTO</a> with Microsoft Architect Evangelist, <a href="http://blogs.msdn.com/usisvde/" target="_blank">Bruce Kyle</a>. </p>
<p>This is a fairly light presentation intended to introduce some new C# language features, VSTO integration features, SharePoint 2007 work flows, Office extension projects for Visual Studio, and generally using MS Office System as a development platform. </p>
<p>Thanks to <a href="http://elegantcode.com/about/chris-brandsma/" target="_blank">Chris</a> for recording and putting this out for me. I am hosting the video on <a href="http://video.msn.com/video.aspx?mkt=en-us&amp;tab=soapbox" target="_blank">MSN&#8217;s SoapBox</a>. </p>
<p>I have to admit that there is a high degree of clipping and the video quality is poor overall. That said, the audio is just fine and much of the presentation is slides or Visual Studio which isn&#8217;t too bad considering. You can tell what we are making when you watch the video in full screen.</p>
<p>Enjoy.</p>
<p> <a title="VSTO in Visual Studio 2008" href="http://video.msn.com/video.aspx?mkt=en-US&amp;brand=&amp;vid=e1f0f4f1-122f-4e7e-a998-c68061548d7a" target="_new"><img height="84" alt="VSTO in Visual Studio 2008" src="http://a494.g.akamai.net/f/494/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/0f/16/e5/96859b62-b6e1-4b78-8074-39b5a6e5160f.jpg" width="112" border="0" />    <br />VSTO in Visual Studio 2008</a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/30/my-vsto-presentation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dynamic LINQ</title>
		<link>http://elegantcode.com/2008/04/15/dynamic-linq/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dynamic-linq</link>
		<comments>http://elegantcode.com/2008/04/15/dynamic-linq/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 01:23:13 +0000</pubDate>
		<dc:creator>Chris Brandsma</dc:creator>
				<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[C# 3.0]]></category>
		<category><![CDATA[Linq]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/15/dynamic-linq/</guid>
		<description><![CDATA[Something I just saw for the first time is a Microsoft C# sample application called DynamicQuery.&#160; This allows you to enter part of a LINQ query as a string. If you have Visual Studio 2008 installed, you can find the samples in this directory: C:\Program Files\Microsoft Visual Studio 9.0\Samples\1033.&#160; Then extract the file CSharpSamples.zip.&#160; The [...]]]></description>
			<content:encoded><![CDATA[<p>Something I just saw for the first time is a Microsoft C# sample application called DynamicQuery.&nbsp; This allows you to enter part of a LINQ query as a string.</p>
<p>If you have Visual Studio 2008 installed, you can find the samples in this directory: C:\Program Files\Microsoft Visual Studio 9.0\Samples\1033.&nbsp; Then extract the file CSharpSamples.zip.&nbsp; The sample will be found at CSharpSamples\LinqSamples\DynamicQuery.</p>
<p>From the sample you will see that you can do perform things like this:</p>
<pre class="csharpcode">var query =&nbsp;&nbsp;&nbsp; db.Customers.Where(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="str">"City == @0 and Orders.Count &gt;= @1"</span>, <span class="str">"London"</span>, 10).
   OrderBy(<span class="str">"CompanyName"</span>).
   Select(<span class="str">"New(CompanyName as Name, Phone)"</span>);
</pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>All of the heavy lifting happens in the Dynamic.cs file that has 11 classes.&nbsp; The interface happens through DynamicQuery static class, which extends the IQueriable interface with new Where, OrderBy, and Select methods.&nbsp; To use these extensions you have to include this line in your code: <strong>using System.Linq.Dynamic;</strong> along with the Dynamic file in your project.</p>
<p>I don&#8217;t have a use for this quite yet, but I think its time will come.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/15/dynamic-linq/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Replace your Collections with IEnumerable&lt;T&gt;</title>
		<link>http://elegantcode.com/2008/04/07/replace-your-collections-with-ienumerablet/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=replace-your-collections-with-ienumerablet</link>
		<comments>http://elegantcode.com/2008/04/07/replace-your-collections-with-ienumerablet/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 20:16:38 +0000</pubDate>
		<dc:creator>Tony Rasa</dc:creator>
				<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Linq]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/07/replace-your-collections-with-ienumerablet/</guid>
		<description><![CDATA[The other day I was remarking on the differences between List&#60;T&#62; and Collection&#60;T&#62;, and how it seemed that List&#60;T&#62; was so much more useful, but officially it shouldn&#8217;t be used in public API&#8217;s. And what a drag that was, because List&#60;T&#62; has so much good stuff in it. So, a fellow coworker called me out [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I was remarking on the differences between List&lt;T&gt; and Collection&lt;T&gt;, and how it seemed that List&lt;T&gt; was so much more useful, but officially <a href="http://blogs.msdn.com/kcwalina/archive/2005/09/26/474010.aspx">it shouldn&#8217;t be used in public API&#8217;s</a>.  And what a drag that was, because List&lt;T&gt; has so much good stuff in it.</p>
<p>So, a fellow coworker called me out on this: why am I returning collections other than IEnumerable&lt;T&gt; anyway?  What conditions actually require the extensibility of Collection&lt;T&gt;, or the extra utility of List&lt;T&gt;?  I didn&#8217;t have an answer for this off the top of my head, so over the weekend I created a new experimental branch of a project and started hacking interface signatures.  What follows are some conclusions from the experiment.</p>
<h4>Setting Up the Experiment</h4>
<p>I replaced all the public signatures of IList, Collection, List, etc. with IEnumerable&lt;T&gt;.  If it was a public API input or output, its now IEnumerable.  Each signature change was followed by re-running all unit tests to make sure that nothing critical broke.</p>
<h4>Conclusion: System.Linq makes IEnumerable&lt;T&gt; Useable</h4>
<p>There were two major &#8220;breaking&#8221; changes found in this experiment.  The first is that IEnumerable&lt;T&gt; doesn&#8217;t expose a Count property, but there are places where we need to know if the list is empty, has one item, has N items, etc.</p>
<p>Fortunately, this codebase was upgraded to Visual Studio 2008 and a .NET 3.5 target a while back.  This gave me an opportunity to use the Count() extension method from the System.Linq namespace. First problem: Solved.</p>
<p>Next, there are cases where I&#8217;d need to access items in a collection by index.  The native IEnumerable doesn&#8217;t provide this, but System.Linq does with extensions like First(), and ElementAt().</p>
<p>So, there&#8217;s two big reasons for not using IEnumerable&lt;T&gt; taken care of.  These changes handled almost all of the collection issues I ran into.</p>
<p>Note: now I&#8217;m &#8220;stuck&#8221; with the .NET 3.5 target.  Not a problem for me, YMMV.</p>
<pre class="csharpcode">[Test]
<span class="kwrd">public</span> <span class="kwrd">void</span> GetControls()
{
    <span class="rem">// SetUp code omitted for brevity...</span>
    var cat = <span class="kwrd">new</span> BrowsableUserControlCatalog();
    var controls = cat.GetRegisteredUserControls(); <span class="rem">// IEnumerable</span>
    Assert.AreEqual(1, controls.Count());
    Assert.AreEqual(<span class="str">"virtualPath"</span>, controls.First().VirtualPath);
}</pre>
<h4>Conclusion: Sometimes you have to extend Collections</h4>
<p>One of the reasons that the Framework Guidlines encourage Collection&lt;T&gt; vs. List&lt;T&gt; is that Collection is easily extended.  I ran into one case where a class had been extended from Collection&lt;T&gt; in order to change the behavior of the InsertItem() and SetItem()  methods.  So we have a collection that requires the ability to add items to it.  Even worse, we have methods added to this collection to provide additional required functionality: swap to items in the collection, reset the sorting index of the items, move an item up or down, that sort of thing.</p>
<p>So, that&#8217;s <strong>one</strong> collection that remained as-is.  I can live with that.  Perhaps on some other weekend, I could split the additional functionality out from that collection and into &#8220;something else,&#8221; which might have additional advantages.  Something for next time..</p>
<h4>Conclusion: Sometimes you have to Sort() [for now...]</h4>
<p>One List&lt;T&gt; that I haven&#8217;t gotten rid of (yet) relies on a Collection&lt;T&gt; supplied by another component.  We are getting a list of files, and putting them into a sort order based on what the user interface wants.  The library has no idea what kinds of sorting options are available, the calling implementation can do pretty much whatever it wants.  The element that varies is the sorting routine passed into List&lt;T&gt;.Sort().</p>
<p>System.Linq provides an .OrderBy() extension, but its signature doesn&#8217;t match up with List&lt;T&gt;.Sort()&#8230;which turned into more of a change than I wanted to deal with for this current experiment.  Saved for next time&#8230;</p>
<h4>So what have we learned?</h4>
<p>Extension methods are fun. I look forward to abusing them heavily in all my new work.  Because of them, its now possible to change 99% of this API to use the most general collection types possible.</p>
<p>But does it make sense to do so?   I&#8217;m not totally convinced.  It does simplify things.  The semantics of what you can do with a given collection is much clearer.  Most of the time, we only needed the abilities of IEnumerable&lt;T&gt;, and it makes sense to use the most generic interface you can get away with &#8211; especially for a platform where you can&#8217;t predict how these things are going to be used.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/07/replace-your-collections-with-ienumerablet/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Exploring Extension Methods in .Net 3.5</title>
		<link>http://elegantcode.com/2008/04/03/exploring-extension-methods-in-net-35/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exploring-extension-methods-in-net-35</link>
		<comments>http://elegantcode.com/2008/04/03/exploring-extension-methods-in-net-35/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 16:26:11 +0000</pubDate>
		<dc:creator>Jarod Ferguson</dc:creator>
				<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[Extension Methods]]></category>
		<category><![CDATA[Linq]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/03/exploring-extension-methods-in-net-35/</guid>
		<description><![CDATA[Finding extension methods in C# 3.5 is not as intuitive as it should be. Just walking the inheritance chain will not show you all the goodies. There are a few steps using object browser that will make this easier. Pull up object browser, set Browse to only show 3.5. (Will not work if you set [...]]]></description>
			<content:encoded><![CDATA[<p>Finding extension methods in C# 3.5 is not as intuitive as it should be. Just walking the inheritance chain will not show you all the goodies. There are a few steps using object browser that will make this easier.</p>
<p><span id="more-1014"></span></p>
<ul>
<li>Pull up object browser, <strong>set Browse to only show 3.5</strong>. (Will not work if you set to all components)
<li>Set the filter to <strong>&#8216;Show Extension Members&#8217;</strong></li>
</ul>
<p><a href="http://elegantcode.com/wp-content/uploads/2008/04/image.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="114" alt="image" src="http://elegantcode.com/wp-content/uploads/2008/04/image-thumb.png" width="244" border="0"></a> </p>
<ul>
<li>Select a type in the browser
<li>In the right pane you will see an <strong>&#8216;Extension Members&#8217;</strong> folder
<li>Now you can browse the public type extensions</li>
</ul>
<p><a href="http://elegantcode.com/wp-content/uploads/2008/04/image1.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="118" alt="image" src="http://elegantcode.com/wp-content/uploads/2008/04/image-thumb1.png" width="244" border="0"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/03/exploring-extension-methods-in-net-35/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

