<?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>illdata.com &#187; Extension Methods</title>
	<atom:link href="http://illdata.com/blog/tag/extension-methods/feed/" rel="self" type="application/rss+xml" />
	<link>http://illdata.com/blog</link>
	<description>(Weblog)Duckworth.ToString()</description>
	<lastBuildDate>Fri, 15 Jan 2010 17:17:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Extension Method Round Up</title>
		<link>http://illdata.com/blog/2009/04/21/extension-method-round-up/</link>
		<comments>http://illdata.com/blog/2009/04/21/extension-method-round-up/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 01:53:52 +0000</pubDate>
		<dc:creator>duckworth</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Extension Methods]]></category>

		<guid isPermaLink="false">http://illdata.com/blog/?p=58</guid>
		<description><![CDATA[Extension methods in c# have definitely changed my day to day development in a positive way, as they can easily add functionality that may be missing in the base class library or provide easy access to routines that you may use frequently. Many times they can just make a snippet of code more terse or [...]]]></description>
			<content:encoded><![CDATA[<p>Extension methods in c# have definitely changed my day to day development in a positive way, as they can easily add functionality that may be missing in the base class library or provide easy access to routines that you may use frequently. Many times they can just make a snippet of code more terse or readable. Here are two extension methods I came across on <a href="http://StackOverflow.com" target="_blank">StackOverflow</a> that come in handy for firing events:</p>
<pre class="csharp"><span style="color: #0600FF;">static</span> <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> RaiseEvent<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span> EventHandler theEvent, <span style="color: #FF0000;">object</span> sender, EventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>theEvent != <span style="color: #0600FF;">null</span><span style="color: #000000;">&#41;</span>
        theEvent<span style="color: #000000;">&#40;</span>sender, e<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">static</span> <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> RaiseEvent&lt;T&gt;<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span> EventHandler&lt;T&gt; theEvent, <span style="color: #FF0000;">object</span> sender, T e<span style="color: #000000;">&#41;</span>
    where T : EventArgs
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>theEvent != <span style="color: #0600FF;">null</span><span style="color: #000000;">&#41;</span>
        theEvent<span style="color: #000000;">&#40;</span>sender, e<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
&nbsp;</pre>
<p>which can be used like such:</p>
<pre class="csharp">SomthingHappenedEvent.<span style="color: #0000FF;">RaiseEvent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>, <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> EventArgs<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;</pre>
<p>another useful extension method for passing in a property name without using hardcoded strings:</p>
<pre class="csharp"><span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">string</span> GetPropertyName&lt;T, S&gt;<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span> T obj, Expression&lt;Func&lt;T, S&gt;&gt; expr<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>MemberExpression<span style="color: #000000;">&#41;</span>expr.<span style="color: #0000FF;">Body</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Member</span>.<span style="color: #0000FF;">Name</span>;
<span style="color: #000000;">&#125;</span></pre>
<p>which can be used as such:</p>
<pre class="csharp">var ob = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> <span style="color: #000000;">&#123;</span> SomeProp = <span style="color: #808080;">&quot;abc&quot;</span><span style="color: #000000;">&#125;</span>;
<span style="color: #FF0000;">string</span> propName = ob.<span style="color: #0000FF;">GetPropertyName</span><span style="color: #000000;">&#40;</span>a =&gt; a.<span style="color: #0000FF;">SomeProp</span><span style="color: #000000;">&#41;</span>;</pre>
<p>and finally, another handy set for quickly serializing any object to JSON:</p>
<pre class="csharp">﻿<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">string</span> ToJson<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span> <span style="color: #FF0000;">object</span> obj<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    var serializer = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> JavaScriptSerializer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #0600FF;">return</span> serializer.<span style="color: #0000FF;">Serialize</span><span style="color: #000000;">&#40;</span>obj<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">string</span> ToJson<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span> <span style="color: #FF0000;">object</span> obj, <span style="color: #FF0000;">int</span> recursonDepth<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    var serializer = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> JavaScriptSerializer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
    serializer.<span style="color: #0000FF;">RecursionLimit</span> = recursonDepth;
    <span style="color: #0600FF;">return</span> serializer.<span style="color: #0000FF;">Serialize</span><span style="color: #000000;">&#40;</span>obj<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://illdata.com/blog/2009/04/21/extension-method-round-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
