<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.NET</title>
        <link>http://geekswithblogs.net/cmartin/category/157.aspx</link>
        <description>.NET</description>
        <language>en-US</language>
        <copyright>Chris Martin</copyright>
        <managingEditor>chris@caliberweb.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Serializing A String Within a CDATA Element (.NET 1.1)</title>
            <link>http://geekswithblogs.net/cmartin/archive/2005/11/30/61705.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;Apparently .NET 2.0 does this out of the box but, I don&amp;rsquo;t get to play with it for awhile so&amp;hellip;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Today I had the need to serialize some error messages in CDATA elements. Quickly, I realized that XmlSerializer doesn&amp;rsquo;t support this out of the box. After a &lt;em&gt;really&lt;/em&gt; quick googlin&amp;rsquo; session, I had my solution. And since I&amp;rsquo;m nice, I&amp;rsquo;ll share it with y&amp;rsquo;all.&lt;/p&gt;
&lt;p&gt;Say you have a class called ErrorMessage that has a string to be serialized:&lt;/p&gt;
&lt;p&gt;[&lt;font color="#808000"&gt;Serializable&lt;/font&gt;]&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;class&lt;/font&gt; &lt;font color="#808000"&gt;ErrorMessage&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#808000"&gt;string &lt;/font&gt;&lt;font color="#808000"&gt;message&lt;/font&gt;;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;hellip;.&lt;/p&gt;
&lt;p&gt;[&lt;font color="#808000"&gt;XmlElement&lt;/font&gt;("message")]&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#808000"&gt;string &lt;/font&gt;&lt;font color="#808000"&gt;Message&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt; { &lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#808000"&gt;message&lt;/font&gt;; }&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt; { &lt;font color="#808000"&gt;message&lt;/font&gt; = &lt;font color="#0000ff"&gt;value&lt;/font&gt;; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;hellip;.&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;font color="#808000"&gt;
&lt;p&gt;&lt;font color="#000000"&gt;If you want to inject the message into a CDATA element do the following:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Create a class to hold your CDATA string and implement IXmlSerializable.&lt;/font&gt;&lt;/p&gt;&lt;font color="#000000"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;class&lt;/font&gt; &lt;font color="#808000"&gt;CDATA&lt;/font&gt; : &lt;font color="#808000"&gt;IXmlSerializable&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#0000ff"&gt;string&lt;/font&gt; &lt;font color="#808000"&gt;text&lt;/font&gt;;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#808000"&gt;CDATA&lt;/font&gt;()&lt;/p&gt;
&lt;p&gt;{}&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#808000"&gt;CDATA&lt;/font&gt;(&lt;font color="#0000ff"&gt;string&lt;/font&gt; &lt;font color="#808000"&gt;text&lt;/font&gt;)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;.&lt;font color="#808000"&gt;text&lt;/font&gt; = &lt;font color="#808000"&gt;text&lt;/font&gt;;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;string&lt;/font&gt; &lt;font color="#808000"&gt;Text&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt; { &lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#808000"&gt;text&lt;/font&gt;; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;font color="#808000"&gt;XmlSchema&lt;/font&gt; &lt;font color="#808000"&gt;IXmlSerializable&lt;/font&gt;.&lt;font color="#808000"&gt;GetSchema&lt;/font&gt;()&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#0000ff"&gt;null&lt;/font&gt;;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; &lt;font color="#808000"&gt;IXmlSerializable&lt;/font&gt;.&lt;font color="#808000"&gt;ReadXml&lt;/font&gt;(&lt;font color="#808000"&gt;XmlReader&lt;/font&gt; &lt;font color="#808000"&gt;reader&lt;/font&gt;)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;.&lt;font color="#808000"&gt;text&lt;/font&gt; = &lt;font color="#808000"&gt;reader&lt;/font&gt;.&lt;font color="#808000"&gt;ReadString&lt;/font&gt;();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; &lt;font color="#808000"&gt;IXmlSerializable&lt;/font&gt;.&lt;font color="#808000"&gt;WriteXml&lt;/font&gt;(&lt;font color="#808000"&gt;XmlWriter&lt;/font&gt; &lt;font color="#808000"&gt;writer&lt;/font&gt;)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#808000"&gt;writer&lt;/font&gt;.&lt;font color="#808000"&gt;WriteCData&lt;/font&gt;(&lt;font color="#0000ff"&gt;this&lt;/font&gt;.&lt;font color="#808000"&gt;text&lt;/font&gt;);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;And change your original ErrorMessage class to&lt;/p&gt;
&lt;p&gt;[&lt;font color="#808000"&gt;Serializable&lt;/font&gt;]&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;class&lt;/font&gt; &lt;font color="#808000"&gt;ErrorMessage&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#808000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;font color="#808000"&gt;message&lt;/font&gt;;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;hellip;.&lt;/p&gt;
&lt;p&gt;[&lt;font color="#808000"&gt;XmlElement&lt;/font&gt;("message", &lt;font color="#808000"&gt;Type&lt;/font&gt;=&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;(&lt;font color="#808000"&gt;CDATA&lt;/font&gt;))]&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#808000"&gt;CDATA&lt;/font&gt; &lt;font color="#808000"&gt;Message&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt; { &lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#808000"&gt;message&lt;/font&gt;; }&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt; { &lt;font color="#808000"&gt;message&lt;/font&gt; = &lt;font color="#0000ff"&gt;value&lt;/font&gt;; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;hellip;.&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Nice and simple.&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=61705"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=61705" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cmartin/aggbug/61705.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Martin</dc:creator>
            <guid>http://geekswithblogs.net/cmartin/archive/2005/11/30/61705.aspx</guid>
            <pubDate>Wed, 30 Nov 2005 19:51:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cmartin/comments/61705.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cmartin/archive/2005/11/30/61705.aspx#feedback</comments>
            <slash:comments>11</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cmartin/comments/commentRss/61705.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cmartin/services/trackbacks/61705.aspx</trackback:ping>
        </item>
        <item>
            <title>Visual Studio 2005 Code Snippets?</title>
            <link>http://geekswithblogs.net/cmartin/archive/2005/11/29/61600.aspx</link>
            <description>So Visual Studio is finally catching up to the tools that I've been using for years. I can't really blame MS for only coming out with these features now. This is a huge company that doesn't release their products every 3 months. What I can do is be a little angry that while they did us a favor by integrating some things into the IDE, they just did it a little sub-par. Now, if anything I'm about to write is wrong, I'm sure some gracious soul will correct me and I'll give my appologies. Onto the meat...

OK. Visual Studio 5005 gives us a great, nifty little feature called "Code Snippets". Basically they are code templates that can generate a bunch of boring code with the least amount of work. Cool. But, the technology doesn't seem to want to give me any control of said code. Take the following very simplistic and reasonable example:

I want the snippet to create this code (I'm serious ;))

&lt;br/&gt;
&lt;font color="#0000FF" size=3&gt;private string &lt;/font&gt;&lt;font color="#808000" size=3&gt;title&lt;/font&gt;&lt;font size=3&gt;;&lt;/font&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;font color="#0000FF" size=3&gt;public string &lt;/font&gt;&lt;font color="#808000" size=3&gt;Title&lt;/font&gt;&lt;br/&gt;
&lt;font size=3&gt;{&lt;/font&gt;
&lt;br/&gt;
&lt;font color="#0000FF" size=3&gt;get &lt;/font&gt;&lt;font size=3&gt;{ &lt;/font&gt;&lt;font color="#0000FF" size=3&gt;return &lt;/font&gt;&lt;font color="#808000" size=3&gt;title&lt;/font&gt;&lt;font size=3&gt;; }&lt;/font&gt;
&lt;br/&gt;
&lt;font color="#0000FF" size=3&gt;set &lt;/font&gt;&lt;font size=3&gt;{ &lt;/font&gt;&lt;font color="#808000" size=3&gt;title&lt;/font&gt;&lt;font size=3&gt; = &lt;/font&gt;&lt;font color="#0000FF" size=3&gt;value&lt;/font&gt;&lt;font size=3&gt;; }&lt;/font&gt;
&lt;br/&gt;
&lt;font size=3&gt; }&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;

So I took the plunge and created this snippet (I'm just showing the CDATA part not the whole XML file.):

&lt;font face="Courier New" size=2&gt;        public $type$ $variableName$;&lt;/font&gt;

&lt;font face="Courier New" size=2&gt;        public $type$ $variableName$
{
get { return $variableName$; }
set { $variableName$ = value; }
}&lt;/font&gt;

My problem with this is that I can't find a way to capitalize the property name. I can't find a way to do it! With QuickCode (RIP for me) or ReSharper this a very easy task. I've got to be missing something here. Who's gonna show me the MS light? 

Cheers...&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=61600"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=61600" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cmartin/aggbug/61600.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Martin</dc:creator>
            <guid>http://geekswithblogs.net/cmartin/archive/2005/11/29/61600.aspx</guid>
            <pubDate>Tue, 29 Nov 2005 17:46:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cmartin/comments/61600.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cmartin/archive/2005/11/29/61600.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/cmartin/comments/commentRss/61600.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cmartin/services/trackbacks/61600.aspx</trackback:ping>
        </item>
        <item>
            <title>To LLBLGen or not?</title>
            <link>http://geekswithblogs.net/cmartin/archive/2003/12/20/1048.aspx</link>
            <description>&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="left" style="font-family: Verdana, Arial, sans-serif;color: black;font-size:10px;"&gt;
&lt;div style="font-family: Verdana, Arial, sans-serif;color: black;font-size:10px;font-weight: bold"&gt;To LLBLGen or not?&lt;/div&gt;&lt;br /&gt;I guess this is my introduction post. My name is Chris Martin (as you can see :)) and I'm a .NET developer with about 6 years experience in mostly Windows technology. I used to dabble in the *nix world a little bit. But, found it too exhausting. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is also my first attempt at blogging. I look forward to being a part of this comunity and hope that I can provide some help to you guys sometimes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now...Onto the meat of this post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm going to use the new LLBLGen Pro on our next project. So far, I can't see any downsides to this at all. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Does anyone have any positive or negative LLBLGen Pro experiences for a web application that they would like to share?&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=1048"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=1048" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cmartin/aggbug/1048.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Martin</dc:creator>
            <guid>http://geekswithblogs.net/cmartin/archive/2003/12/20/1048.aspx</guid>
            <pubDate>Sat, 20 Dec 2003 17:16:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/cmartin/comments/1048.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/cmartin/archive/2003/12/20/1048.aspx#feedback</comments>
            <slash:comments>22</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/cmartin/comments/commentRss/1048.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/cmartin/services/trackbacks/1048.aspx</trackback:ping>
        </item>
    </channel>
</rss>