<?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>Meatball&#039;s Guide to .NET &#187; Resharper</title>
	<atom:link href="http://rogerpence.com/blog/index.php/archives/tag/resharper/feed" rel="self" type="application/rss+xml" />
	<link>http://rogerpence.com/blog</link>
	<description>A dogma-free guide to making real-world sense of .NET</description>
	<lastBuildDate>Wed, 23 Jun 2010 16:15:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Getting to know Resharper: Generate a constructor</title>
		<link>http://rogerpence.com/blog/index.php/archives/230</link>
		<comments>http://rogerpence.com/blog/index.php/archives/230#comments</comments>
		<pubDate>Tue, 04 Aug 2009 20:03:43 +0000</pubDate>
		<dc:creator>rp</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Resharper]]></category>

		<guid isPermaLink="false">http://rogerpence.com/blog/?p=230</guid>
		<description><![CDATA[Resharper, the terrific Visual Studio productivity plugin, reduces adding a constructor for class, with as many arguments as you need, to just a few mouse clicks.Here’s how to use this Resharper feature.
Figure 1a. Class without a constructor.

  1public class Artist
  2{
  3    public int ArtistId { get; set; }
 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jetbrains.com/resharper/index.html">Resharper</a>, the terrific Visual Studio productivity plugin, reduces adding a constructor for class, with as many arguments as you need, to just a few mouse clicks.Here’s how to use this Resharper feature.</p>
<div class="sourceCodeHeading">Figure 1a. Class without a constructor.</div>
<div id="Id1046440468SourceCode" class="sourceCode">
<pre class="even"><span class="ln">  1</span><span class="code">public class Artist</span></pre>
<pre class="odd"><span class="ln">  2</span><span class="code">{</span></pre>
<pre class="even"><span class="ln">  3</span><span class="code">    public int ArtistId { get; set; }</span></pre>
<pre class="odd"><span class="ln">  4</span><span class="code">    public string Name { get; set; }</span></pre>
<pre class="even"><span class="ln">  5</span><span class="code">    public int Rank { get; set; }</span></pre>
<pre class="odd"><span class="ln">  6</span><span class="code">}</span></pre>
</div>
<div class="sourceCodeFooter"><a id="Id1046440468SourceCodeToClipboard" class="copyLink" href="javascript:toggleLineNumbers( 'Id1046440468SourceCode' );">Show copy-friendly code</a></div>
<p>Put the cursor somewhere in the body of a class that needs a constructor and press Alt/Ins (or use the Resharper&gt;Code&gt;Generate menu option). This displays Resharper’s <em>Generate</em> context menu (as shown below). Click “<em>Constructor</em>.”</p>
<p><a href="http://rogerpence.com/blog/wp-content/uploads/2009/10/ContextMenu1.jpg"><img style="border-right-width: 0px; margin: 0px 20px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ContextMenu" border="0" alt="ContextMenu" src="http://rogerpence.com/blog/wp-content/uploads/2009/10/ContextMenu_thumb1.jpg" width="212" height="211" /></a> </p>
<h3>Coding with Resharper is almost like pair programming but minus the gum-chewing, Jonas Brother-listening, obnoxious coder next to you.</h3>
<p>This shows the <em>Generate constructors</em> dialog below. Select the members you want as arguments to the constructor with the checkboxes (selecting the class name selects all of the fields for use as constructor parameters). You can also select the access rights (public, private, et al) as well as whether you want an XML comment block added. Resharper is context sensitive&#8211;when using it to inject a constructor in an abstract class it’s smart enough to mark that constructor<em> protected</em>. Why? <a href="http://msdn.microsoft.com/en-us/library/ms229047.aspx">Read this.</a> For my money, providing this level of awareness is how Resharper elevates itself from being a simple code paster to being a true ally in helping you write better code. It’s almost like pair programming but minus the gum-chewing, Jonas Brother listening, obnoxious coder next to you.</p>
<p>The “Advanced” button lets you specify what arguments are passed on to a base constructor (if any are available).</p>
<p><a href="http://rogerpence.com/blog/wp-content/uploads/2009/10/generate.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="generate" border="0" alt="generate" src="http://rogerpence.com/blog/wp-content/uploads/2009/10/generate_thumb.jpg" width="335" height="335" /></a> </p>
<p>Assuming that the ArtistId and Name fields were selected, when you click “Finish” the constructor shown below is immediately added to the class.</p>
<div class="sourceCodeHeading">Figure 1b. Class with constructor automatically added.</div>
<div id="Id1059101875SourceCode" class="sourceCode">
<pre class="even"><span class="ln">  1</span><span class="code">public class Artist</span></pre>
<pre class="odd"><span class="ln">  2</span><span class="code">{</span></pre>
<pre class="even"><span class="ln">  3</span><span class="code">    public Artist( string name, int artistId )</span></pre>
<pre class="odd"><span class="ln">  4</span><span class="code">    {</span></pre>
<pre class="even"><span class="ln">  5</span><span class="code">        Name = name;</span></pre>
<pre class="odd"><span class="ln">  6</span><span class="code">        ArtistId = artistId;</span></pre>
<pre class="even"><span class="ln">  7</span><span class="code">    }</span></pre>
<pre class="odd"><span class="ln">  8</span><span class="code"></span></pre>
<pre class="even"><span class="ln">  9</span><span class="code">    public int ArtistId { get; set; }</span></pre>
<pre class="odd"><span class="ln"> 10</span><span class="code">    public string Name { get; set; }</span></pre>
<pre class="even"><span class="ln"> 11</span><span class="code">    private int Rank { get; set; }</span></pre>
<pre class="odd"><span class="ln"> 12</span><span class="code">}</span></pre>
</div>
<div class="sourceCodeFooter"><a id="Id1059101875SourceCodeToClipboard" class="copyLink" href="javascript:toggleLineNumbers( 'Id1059101875SourceCode' );">Show copy-friendly code</a></div>
<p>As you can see, Resharper makes it ridiculously easy to automate constructor creation, with optional parameters and value assignments. Although my examples show Resharper working with C#, there is a VB.NET version of Resharper available.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogerpence.com/blog/index.php/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
