<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4459928262138962421</id><updated>2011-11-20T17:12:28.055-08:00</updated><category term='SOLID'/><category term='jquery cheat sheet'/><category term='set method'/><category term='SQL'/><category term='itemRenderers issue'/><category term='debugging'/><category term='ArrayList'/><category term='itemRenderer'/><category term='create setup project'/><category term='query an arraylist'/><category term='IEnumerable(T)'/><category term='S.O.L.I.D'/><category term='c# get instance name'/><category term='developers'/><category term='xml writer settings'/><category term='.net'/><category term='LINQ to SQL'/><category term='windows services'/><category term='arraylist implementation'/><category term='MDS'/><category term='MDS proxy settings'/><category term='nullable types'/><category term='codeproject'/><category term='uninstall'/><category term='notes'/><category term='set data'/><category term='LINQ'/><category term='email validation'/><category term='c# List(T)'/><category term='iis'/><category term='override install'/><category term='IEnumerable'/><category term='setup projects'/><category term='strongly typed ruby code'/><category term='thedotnetway'/><category term='COM'/><category term='website'/><category term='xmlwriter'/><category term='flex'/><category term='get method name'/><category term='C#'/><category term='online'/><category term='regex'/><category term='unable to connect to the selected mobile data service'/><category term='multiple Main() methods'/><category term='remote debugging'/><category term='ruby language'/><category term='data not being displayed as required'/><category term='custom actions'/><category term='thekfactor'/><category term='C#.Net'/><category term='c# hidden features'/><category term='blackberry development'/><category term='partial methods'/><title type='text'>The .Net Way (.Net, .Net - VC++ Interop, PHP/MySQL, Blackerry Dev and Many more...)</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-8505754126546571067</id><published>2011-11-20T17:00:00.000-08:00</published><updated>2011-11-20T17:12:28.110-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='online'/><category scheme='http://www.blogger.com/atom/ns#' term='developers'/><title type='text'>a site for developers...</title><content type='html'>Hello all,&lt;br /&gt;&lt;br /&gt;I've recently launched a sub-domain under &lt;a href="http://thekfactor.info"&gt;thekfactor.info&lt;/a&gt; called &lt;a href="http://dev.thekfactor.info"&gt;dev.thekfactor.info&lt;/a&gt; (which redirects you to thekfactor.info - i am working on that). In short, this is &lt;a href="http://dev.thekfactor.info"&gt;dev.thekfactor.info&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;As engineers you might have gotten the habit of making notes of something you learn/hear, wishing to recollect them later. it would most likely be in a piece of paper and, in most cases it would be lost forever! you may not even remember you learned/heard something new! If this is you, &lt;a href="http://dev.thekfactor.info"&gt;http://dev.thekfactor.info&lt;/a&gt; is for you!!&lt;br /&gt;&lt;br /&gt;Here you will be able to make a note of whatever you want. you could have a private note, a public note or a protected note (if you are an engineer, you know what i mean already! :) ) for example you could add another user to your group and have them alone view some notes (protected!).. and much more!&lt;br /&gt;&lt;br /&gt;Also, there is a section to update users on what's in your mind. (ya, ya, kinda like twitter! )&lt;br /&gt;&lt;br /&gt;Try it out friends and let me know your opinions...!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-8505754126546571067?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/8505754126546571067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=8505754126546571067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/8505754126546571067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/8505754126546571067'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2011/11/site-for-developers.html' title='a site for developers...'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-1959512897373330674</id><published>2011-04-16T18:47:00.000-07:00</published><updated>2011-04-16T18:52:21.221-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thekfactor'/><category scheme='http://www.blogger.com/atom/ns#' term='website'/><title type='text'>My new website...!</title><content type='html'>Hi there!&lt;br /&gt;&lt;br /&gt;At last I have released my revamped website! I hope to add a lot of interesting and useful stuff out there!! Watch out!!!&lt;br /&gt;&lt;br /&gt;Here is the link &lt;a href="http://thekfactor.info" target="_blank"&gt;http://thekfactor.info&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;~ Karthik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-1959512897373330674?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/1959512897373330674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=1959512897373330674' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/1959512897373330674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/1959512897373330674'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2011/04/my-new-website.html' title='My new website...!'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-5891576549099726781</id><published>2011-04-07T07:47:00.000-07:00</published><updated>2011-04-07T07:49:28.997-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='codeproject'/><category scheme='http://www.blogger.com/atom/ns#' term='iis'/><title type='text'>Remotely debugging a web application</title><content type='html'>Check out this article by Abhijit. It outlines how you could test a web application hosted remotely in IIS using msvmon.exe, and the remote debugger tools in visual studio. I promise you, it's a nice read!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx" target="_blank"&gt;http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-5891576549099726781?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/5891576549099726781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=5891576549099726781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/5891576549099726781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/5891576549099726781'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2011/04/remotely-debugging-web-application.html' title='Remotely debugging a web application'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-4895966873639095388</id><published>2011-03-10T08:30:00.000-08:00</published><updated>2011-03-10T08:33:17.604-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery cheat sheet'/><title type='text'>jQuery Cheat Sheet</title><content type='html'>Ha! I am blogging after a long time! Check out this link - a jquery cheat sheet! - &lt;a href="http://woorkup.com/wp-content/uploads/2011/02/jQuery-1.5-Visual-Cheat-Sheet.pdf" target="_blank"&gt;http://woorkup.com/wp-content/uploads/2011/02/jQuery-1.5-Visual-Cheat-Sheet.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-4895966873639095388?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/4895966873639095388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=4895966873639095388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/4895966873639095388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/4895966873639095388'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2011/03/jquery-cheat-sheet.html' title='jQuery Cheat Sheet'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-8456628599775176687</id><published>2010-04-07T15:37:00.000-07:00</published><updated>2010-04-07T15:40:33.392-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c# hidden features'/><category scheme='http://www.blogger.com/atom/ns#' term='partial methods'/><category scheme='http://www.blogger.com/atom/ns#' term='nullable types'/><title type='text'>A Nice Blog Post I Found - Hidden Features of C#</title><content type='html'>Hey People,&lt;br /&gt;&lt;br /&gt;I was browsing through StackOverflow and found this interesting post. People participating in this particular blog post discuss various hidden/unknown features of C#. Check it out!!!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/9033/hidden-features-of-c/" target="_blank"&gt;http://stackoverflow.com/questions/9033/hidden-features-of-c/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Do let me know your comments!!!&lt;br /&gt;&lt;br /&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;~ Karthik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-8456628599775176687?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/8456628599775176687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=8456628599775176687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/8456628599775176687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/8456628599775176687'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2010/04/nice-blog-post-i-found-hidden-features.html' title='A Nice Blog Post I Found - Hidden Features of C#'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-1396900422001698004</id><published>2010-03-30T14:57:00.001-07:00</published><updated>2010-04-04T21:58:39.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xmlwriter'/><category scheme='http://www.blogger.com/atom/ns#' term='xml writer settings'/><title type='text'>C#: Xml Writer - Applying XML writer settings</title><content type='html'>Hi People,&lt;br /&gt;&lt;br /&gt;I have seen that at times we need to generate XML using code. This is in contrast to web services, where in XML is generated by the compiler. In this post I would like to give some pointers about creating XML files using C# - the "XmlWriter" class. Consider the following piece of code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;XmlWriter xml = XmlWriter.Create(@"c:\file.xml");&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This would instantiate a XML writer and you could use various commands like xml.WriteStartElement(...), xml. WriteValue(..), xml.WriteEndElement() to construct the XML file dynamically. But there is a problem w/ this. A file created w/ such an instance of XmlWriter (xml) would like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&amp;lt;Users&amp;gt;&amp;lt;User&amp;gt;&amp;lt;Name&amp;gt;user1&amp;lt;/Name&amp;gt;&amp;lt;/User&amp;gt;&amp;lt;User&amp;gt;&amp;lt;Name&amp;gt;user2&amp;lt;/Name&amp;gt;&amp;lt;/User&amp;gt;&amp;lt;User&amp;gt;&amp;lt;Name&amp;gt;user3&amp;lt;/Name&amp;gt;&amp;lt;/User&amp;gt;&amp;lt;/Users&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;But, we may expect the XML file to have some line breaks, indentation to make it readable to others (though XML is not meant for that! ;) ). For this we need to apply some XML writer settings using the "XmlWriterSettings" class as shown below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;            &lt;br /&gt;XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();&lt;br /&gt;xmlWriterSettings.NewLineOnAttributes = true;&lt;br /&gt;xmlWriterSettings.Indent = true;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Now the XmlWriter would be instantiated as:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;XmlWriter xml = XmlWriter.Create(path, xmlWriterSettings);&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;With this the XML generated would be indented, with line breaks as appropriate! Check out the final output after the addition settings:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;Users&amp;gt;&lt;br /&gt;  &amp;lt;User&amp;gt;&lt;br /&gt;    &amp;lt;Name&amp;gt;user1&amp;lt;/Name&amp;gt;&lt;br /&gt;  &amp;lt;/User&amp;gt;&lt;br /&gt;  &amp;lt;User&amp;gt;&lt;br /&gt;    &amp;lt;Name&amp;gt;user2&amp;lt;/Name&amp;gt;&lt;br /&gt;  &amp;lt;/User&amp;gt;&lt;br /&gt;  &amp;lt;User&amp;gt;&lt;br /&gt;    &amp;lt;Name&amp;gt;user3&amp;lt;/Name&amp;gt;&lt;br /&gt;  &amp;lt;/User&amp;gt;&lt;br /&gt;&amp;lt;/Users&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Check out the code in full:&lt;br /&gt;&lt;br /&gt;void Main()&lt;br /&gt;{&lt;br /&gt; XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();&lt;br /&gt; xmlWriterSettings.NewLineOnAttributes = true;&lt;br /&gt; xmlWriterSettings.Indent = true;&lt;br /&gt;&lt;br /&gt; XmlWriter xml = XmlWriter.Create(@"C:\file.xml", xmlWriterSettings);&lt;br /&gt; &lt;br /&gt; xml.WriteStartElement("Users");&lt;br /&gt; &lt;br /&gt; foreach (string client in new string[] {"user1","user2","user3"})&lt;br /&gt; {&lt;br /&gt;  xml.WriteStartElement("User");&lt;br /&gt;&lt;br /&gt;  xml.WriteStartElement("Name");&lt;br /&gt;  xml.WriteValue(client);&lt;br /&gt;  xml.WriteEndElement();&lt;br /&gt; &lt;br /&gt;  xml.WriteEndElement();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; xml.WriteEndElement();&lt;br /&gt; &lt;br /&gt; xml.Close();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-1396900422001698004?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/1396900422001698004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=1396900422001698004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/1396900422001698004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/1396900422001698004'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2010/03/blog-post.html' title='C#: Xml Writer - Applying XML writer settings'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-4111932571684829772</id><published>2010-03-20T23:17:00.000-07:00</published><updated>2010-03-20T23:24:42.008-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IEnumerable'/><category scheme='http://www.blogger.com/atom/ns#' term='c# List(T)'/><category scheme='http://www.blogger.com/atom/ns#' term='IEnumerable(T)'/><category scheme='http://www.blogger.com/atom/ns#' term='S.O.L.I.D'/><category scheme='http://www.blogger.com/atom/ns#' term='ArrayList'/><category scheme='http://www.blogger.com/atom/ns#' term='SOLID'/><title type='text'>S.O.L.I.D C# Code - Writing less code to carry out an activity unlike conventional methods (Comparison)</title><content type='html'>Hey All!&lt;br /&gt;&lt;br /&gt;I am back w/ a C# post at last! Been while since I posted anything related to C#. Its 1'o clock, so I may have to edit this post later. I was reading some posts about S.O.L.I.D C# principles and I thought that I should post something about that. We may be (are) unknowingly using a lot of S.O.L.I.D principles in our day-to-day life probably. &lt;br /&gt;&lt;br /&gt;Check out the following example. You would be able to notice clearly that S.O.L.I.D code uses  much lesser amount of code to accomplish the same task that conventional code does. Keep in mind that List&amp;lt;T&amp;gt; implements the IEnumerable&amp;lt;T&amp;gt; and IEnumerable interface, but, ArrayList only implements IEnumerable. And, to say the least, both List&amp;lt;T&amp;gt; and ArrayList are extremely useful data structures (I feel!).&lt;br /&gt;&lt;br /&gt;    public class Content&lt;br /&gt;    {&lt;br /&gt;        public int a;&lt;br /&gt;        public string b;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public class EnumQu&lt;br /&gt;    {&lt;br /&gt;        public ArrayList arrList = null;&lt;br /&gt;        public List&amp;lt;Content&amp;gt; list = null;&lt;br /&gt;&lt;br /&gt;        private static void print(string message)&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine("");&lt;br /&gt;            Console.WriteLine(message);&lt;br /&gt;            Console.WriteLine("");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void loadData()&lt;br /&gt;        {&lt;br /&gt;            arrList = new ArrayList();&lt;br /&gt;            list = new List&amp;lt;Content&amp;gt;();&lt;br /&gt;&lt;br /&gt;            for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;            {&lt;br /&gt;                Content c = new Content();&lt;br /&gt;                c.a = (i + 1);&lt;br /&gt;                c.b = "String " + (i + 1);&lt;br /&gt;&lt;br /&gt;                arrList.Add(c);&lt;br /&gt;                list.Add(c);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void arrayListTests()&lt;br /&gt;        {&lt;br /&gt;            // Display the items in ArrayList&lt;br /&gt;            // ArrayList implements IEnumerable but not IEnumerable&amp;lt;T&amp;gt;&lt;br /&gt;            // so .ForEach cannot be invoked&lt;br /&gt;&lt;br /&gt;            // S.O.L.I.D code to display (at least partially)&lt;br /&gt;            print("Select (S.O.L.I.D):");&lt;br /&gt;&lt;br /&gt;            var query = (from Content c in arrList select new { c });&lt;br /&gt;&lt;br /&gt;            foreach (var q in query) { Console.WriteLine(q.c.a + " - " + q.c.b); }&lt;br /&gt;&lt;br /&gt;            // S.O.L.I.D code to query for a value&lt;br /&gt;            print("Select - Single (S.O.L.I.D):");&lt;br /&gt;&lt;br /&gt;            var query_sel = (from Content c in arrList where c.a == 5 select new { c });&lt;br /&gt;&lt;br /&gt;            foreach (var q in query_sel) { Console.WriteLine(q.c.a + " - " + q.c.b); }&lt;br /&gt;&lt;br /&gt;            // Conventional C# code&lt;br /&gt;            print("Select:");&lt;br /&gt;            &lt;br /&gt;            foreach (Content c in list)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(c.a + " - " + c.b);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            print("Select - Single:");&lt;br /&gt;&lt;br /&gt;            foreach (Content c in list)&lt;br /&gt;            {&lt;br /&gt;                if (c.a == 5)&lt;br /&gt;                {&lt;br /&gt;                    Console.WriteLine(c.a + " - " + c.b);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void listTests()&lt;br /&gt;        {&lt;br /&gt;            // Display the items in List&amp;lt;T&amp;gt;&lt;br /&gt;            // List&amp;lt;T&amp;gt; implements IEnumerable&amp;lt;T&amp;gt; so .ForEach can be invoked&lt;br /&gt;&lt;br /&gt;            // S.O.L.I.D code&lt;br /&gt;            print("Select (S.O.L.I.D):");&lt;br /&gt;&lt;br /&gt;            list.ForEach(delegate(Content c){ Console.WriteLine(c.a + " - " + c.b); });&lt;br /&gt;&lt;br /&gt;            // S.O.L.I.D code to query for a value&lt;br /&gt;            print("Select - Single (S.O.L.I.D):");&lt;br /&gt;&lt;br /&gt;            List&amp;lt;Content&amp;gt; cList = list.Where(c =&amp;gt; c.a == 5).ToList();&lt;br /&gt;&lt;br /&gt;            cList.ForEach(delegate(Content c){ Console.WriteLine(c.a + " - " + c.b); });&lt;br /&gt;            &lt;br /&gt;            // Conventional C# code&lt;br /&gt;            print("Select:");&lt;br /&gt;&lt;br /&gt;            foreach (Content c in list)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(c.a + " - " + c.b);&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            print("Select - Single:");&lt;br /&gt;&lt;br /&gt;            foreach (Content c in list)&lt;br /&gt;            {&lt;br /&gt;                if (c.a == 5)&lt;br /&gt;                {&lt;br /&gt;                    Console.WriteLine(c.a + " - " + c.b);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            EnumQu enumQu = new EnumQu();&lt;br /&gt;            enumQu.loadData();&lt;br /&gt;            enumQu.arrayListTests();&lt;br /&gt;            enumQu.listTests();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;As said before, I may have to add more information in here!! See you soon with another post!!!&lt;br /&gt;&lt;br /&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;~ Karthik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-4111932571684829772?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/4111932571684829772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=4111932571684829772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/4111932571684829772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/4111932571684829772'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2010/03/solid-c-code-writing-less-code-to-carry.html' title='S.O.L.I.D C# Code - Writing less code to carry out an activity unlike conventional methods (Comparison)'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-2186504138401582232</id><published>2010-03-11T11:56:00.000-08:00</published><updated>2010-03-12T09:51:42.115-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='itemRenderers issue'/><category scheme='http://www.blogger.com/atom/ns#' term='itemRenderer'/><category scheme='http://www.blogger.com/atom/ns#' term='set data'/><category scheme='http://www.blogger.com/atom/ns#' term='set method'/><category scheme='http://www.blogger.com/atom/ns#' term='data not being displayed as required'/><title type='text'>Flex/ActionScript - Item Renderers Issue (Items not being rendered as required)</title><content type='html'>Hi People!&lt;br /&gt;&lt;br /&gt;It's been a very very long time since I posted something! So here is some Flex/ActionScript stuff. (Some C# stuff is coming soon ;))!&lt;br /&gt;&lt;br /&gt;This post is about correcting the issue encountered while using item renderers in DataGrids. I am not a UI guy and this post mainly concentrates on how to solve and not any fancy stuff. Coming to the point, when using datagrids in Flex, the default "rowCount" attribute would be roughly 7/8. Assume you are setting the "rowCount" attribute to "10". Now when Flex renders the data grid, only 10 itemRenderer instances are created as the user will initially be able to view only 10 rows. And if you are using itemRenderers you are most likely to render them using multiple properties from the dataProvider. Consider the following data grid column:&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:DataGridColumn headerText="Attachments" dataField="Id and HasAttachment and ServerID" itemRenderer="renderer.AttachmentColRenderer" /&amp;gt;&lt;br /&gt;&lt;br /&gt;Here the item renderer "AttachmentColRenderer" would be using the following properties from the dataProvider: Id, HasAttachment, ServerID. I got in to a problem while using item renderers. The issue was that, the first 10 items were displayed as per the requirement. But while scrolling/paging I noticed that the items rendered were not according to what they should be. For example, I had to make a link button visible if there was an attachment and vice versa. But  for some items the link button appeared even though there were no corresponding downloads. Before using this solution I was using the "creationComplete" event to manipulate the controls as required.&lt;br /&gt;&lt;br /&gt;The issue was that Flex reuses the instances of the item renderers created initially. And so, the data wouldn't be set during reuse causing this issue. To overcome this add the following in the item renderer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;mx:Script&amp;gt;&lt;br /&gt;  &amp;lt;![CDATA[&lt;br /&gt;   // Over ride the "set" method so that every instance gets appropriate data&lt;br /&gt;   override public function set data(value:Object):void &lt;br /&gt;   {&lt;br /&gt;    // At times you 'may' get a null&lt;br /&gt;    if (value != null)&lt;br /&gt;    {&lt;br /&gt;     // super.data would normally hold the data for this instance&lt;br /&gt;     super.data = value;&lt;br /&gt;     &lt;br /&gt;     // Process the data as per requirements from this point&lt;br /&gt;     if (super.data.HasAttachment.toString() == "true")&lt;br /&gt;     {&lt;br /&gt;      lnkDownload.visible = true;&lt;br /&gt;     }&lt;br /&gt;     else&lt;br /&gt;     {&lt;br /&gt;      lnkDownload.visible = false;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  ]]&amp;gt;&lt;br /&gt; &amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;Here I need to override the set data method, so that the data that corresponds this particular instance is being set. After this the items were rendered as expected. If you are a flex person, the above snippet would immediately make sense, so I guess no explanation is needed!&lt;br /&gt;&lt;br /&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;~ Karthik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-2186504138401582232?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/2186504138401582232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=2186504138401582232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/2186504138401582232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/2186504138401582232'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2010/03/flexactionscript-item-renderers-issue.html' title='Flex/ActionScript - Item Renderers Issue (Items not being rendered as required)'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-8722581093589384035</id><published>2009-11-20T23:46:00.000-08:00</published><updated>2009-12-15T10:18:54.276-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arraylist implementation'/><category scheme='http://www.blogger.com/atom/ns#' term='strongly typed ruby code'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby language'/><title type='text'>It's RUBY time :) - Strongly typed arraylists in Ruby</title><content type='html'>Hey Guys,&lt;br /&gt;&lt;br /&gt;I was trying out Ruby and in the program below I am attempting to create a strongly typed ArrayList :) Seriously, I really really enjoy programming in Ruby :) Let me know if you have any comments...!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Author - Karthik Ananthapadmanaban&lt;br /&gt;# Date/Time  - 11/21/2009 1.43 AM&lt;br /&gt;# Updated on - 11/21/2009 11.21 AM&lt;br /&gt;&lt;br /&gt;# A simple module that encrypts/decypts strings&lt;br /&gt;# Similar to caesar's cipher&lt;br /&gt;module Crypt&lt;br /&gt;class Cryptor&lt;br /&gt;  def Encrypt(string)&lt;br /&gt;    @str1 = ""&lt;br /&gt;    string.each_byte{|x| @str1 = @str1 + ((x+1).chr)}&lt;br /&gt;    return @str1&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def Decrypt(string)&lt;br /&gt;    @str1 = ""&lt;br /&gt;    string.each_byte{|x| @str1 = @str1 + ((x-1).chr)}&lt;br /&gt;    return @str1&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# A simple module that implements&lt;br /&gt;# various arithmetic operations&lt;br /&gt;module Math&lt;br /&gt;  class Arithmetic&lt;br /&gt;      def Add(num1,num2)&lt;br /&gt;          return num1+num2&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      def Sub(num1,num2)&lt;br /&gt;          return num1-num2&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      def Mul(num1,num2)&lt;br /&gt;          return num1*num2&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      def Div(num1,num2)&lt;br /&gt;          return num1/num2&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      def Sqr(num1)&lt;br /&gt;          return num1*num1&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      def Sqrt(num1)&lt;br /&gt;          return num1 ** 0.5&lt;br /&gt;      end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# As we all know, ruby is dynamically typed&lt;br /&gt;# I just wanted to create a class &lt;br /&gt;# that allows only manipulating a certain type&lt;br /&gt;# so,  the result is a strongly typed class (trivially?) :)&lt;br /&gt;# Yes, in C# ArrayList items are not strongly typed, &lt;br /&gt;# against List&lt;&gt;, where the items are strongly typed &lt;&gt;&lt;br /&gt;# comments are welcome ;)&lt;br /&gt;module Collections&lt;br /&gt;  class ArrayList&lt;br /&gt;      def initialize (defType)&lt;br /&gt;          @defaultType = defType&lt;br /&gt;          @objArr = []&lt;br /&gt;          &lt;br /&gt;          @posIndex = 0&lt;br /&gt;      end&lt;br /&gt;    &lt;br /&gt;      def Add(someObj)&lt;br /&gt;        if (someObj.class.to_s.eql?(@defaultType))&lt;br /&gt;          puts("Adding the object")&lt;br /&gt;          @objArr.push(someObj)&lt;br /&gt;        else&lt;br /&gt;          puts("Not adding the object")&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;      &lt;br /&gt;      def Get&lt;br /&gt;        return @objArr&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      # Why don't you just use Array.At? :)&lt;br /&gt;      def GetItemAt(pos)&lt;br /&gt;        for obj in @objArr&lt;br /&gt;            &lt;br /&gt;            if (@posIndex == pos.to_i)&lt;br /&gt;                @posIndex = 0&lt;br /&gt;                return obj&lt;br /&gt;            else&lt;br /&gt;                @posIndex = @posIndex +1  &lt;br /&gt;            end            &lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;include Crypt&lt;br /&gt;include Math&lt;br /&gt;include Collections&lt;br /&gt;&lt;br /&gt;cr = Cryptor.new&lt;br /&gt;puts(cr.Encrypt("this is a very very very long string"))&lt;br /&gt;puts(cr.Decrypt(cr.Encrypt("this is a very very very long string")))&lt;br /&gt;&lt;br /&gt;puts("\n")&lt;br /&gt;&lt;br /&gt;m1 = Arithmetic.new&lt;br /&gt;m2 = Arithmetic.new&lt;br /&gt;m3 = Arithmetic.new&lt;br /&gt;m4 = Arithmetic.new&lt;br /&gt;m5 = Arithmetic.new&lt;br /&gt;&lt;br /&gt;# coll = ArrayList.new("Math::Arithmetic")&lt;br /&gt;# or&lt;br /&gt;coll = ArrayList.new(m1.class.to_s)&lt;br /&gt;&lt;br /&gt;# All of the following would be added&lt;br /&gt;coll.Add(m1)&lt;br /&gt;coll.Add(m2)&lt;br /&gt;coll.Add(m3)&lt;br /&gt;coll.Add(m4)&lt;br /&gt;coll.Add(m5)&lt;br /&gt;&lt;br /&gt;puts("\n")&lt;br /&gt;&lt;br /&gt;# This wouldn't be added&lt;br /&gt;coll.Add(cr)&lt;br /&gt;&lt;br /&gt;puts("\n")&lt;br /&gt;&lt;br /&gt;i = 10&lt;br /&gt;&lt;br /&gt;for obj in coll.Get&lt;br /&gt;  puts(obj.Add(4,i))&lt;br /&gt;  i = i+1&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts("\n")&lt;br /&gt;&lt;br /&gt;puts("Number of items: ")&lt;br /&gt;puts(coll.Get.length)&lt;br /&gt;&lt;br /&gt;puts("\n")&lt;br /&gt;&lt;br /&gt;# This would work&lt;br /&gt;obj = coll.GetItemAt(3)&lt;br /&gt;puts(obj.Add(4,10))&lt;br /&gt;&lt;br /&gt;puts("\n")&lt;br /&gt;&lt;br /&gt;# This wouldn't work&lt;br /&gt;# As the obj would be undefined, an error would be &lt;br /&gt;# generated at the top&lt;br /&gt;obj = coll.GetItemAt(30)&lt;br /&gt;puts(obj.Add(4,10))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Thanks and Happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-8722581093589384035?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/8722581093589384035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=8722581093589384035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/8722581093589384035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/8722581093589384035'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/11/its-ruby-time-strongly-typed-arraylists.html' title='It&apos;s RUBY time :) - Strongly typed arraylists in Ruby'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-7298790076414548235</id><published>2009-11-06T09:54:00.000-08:00</published><updated>2009-11-06T10:00:11.924-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blackberry development'/><category scheme='http://www.blogger.com/atom/ns#' term='MDS proxy settings'/><title type='text'>Blackberry - How To : Making the simualtor behind a proxy to connect to the internet</title><content type='html'>Hey All!&lt;br /&gt;&lt;br /&gt;I am back ;)&lt;br /&gt;&lt;br /&gt;Building upon my previous post, this is a useful link to enable your BB simulator to access the internet, if it's behind a proxy.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800738/800792/801079/How_To_-_Configure_the_BlackBerry_MDS_simulator_to_work_behind_a_proxy.html?nodeid=800740&amp;amp;vernum=0"&gt;http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800738/800792/801079/How_To_-_Configure_the_BlackBerry_MDS_simulator_to_work_behind_a_proxy.html?nodeid=800740&amp;amp;vernum=0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy coding ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-7298790076414548235?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/7298790076414548235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=7298790076414548235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/7298790076414548235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/7298790076414548235'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/11/blackberry-how-to-making-simualtor.html' title='Blackberry - How To : Making the simualtor behind a proxy to connect to the internet'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-3495146753749879076</id><published>2009-11-05T12:45:00.000-08:00</published><updated>2009-11-05T16:09:29.605-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unable to connect to the selected mobile data service'/><category scheme='http://www.blogger.com/atom/ns#' term='blackberry development'/><category scheme='http://www.blogger.com/atom/ns#' term='MDS'/><title type='text'>Blackberry - How To : Solving the "Unable to Connect to the MDS Simulator Service" problem</title><content type='html'>I am back, after a loooooong time!! Let me get in to the post directly instead of unnecessary ramblings. I am working a mobile .Net web application and had to test the same in a Blackberry Simulator. The first time I started trying out, it was a breeze, the page opened up and I was able to browse the web site. But the next time I fired up my browser from the simulator, nothing seemed to work. I was getting the following error every time I fired up my brower (obviously my MDS was up and running :D ):&lt;br /&gt;&lt;br /&gt;"Unable to connect to the selected mobile data service..."&lt;br /&gt;&lt;br /&gt;I tried in vain to solve this problem by various means, but nothing seemed to work (lucky me!!). &lt;br /&gt;&lt;br /&gt;Anyways, let me get to the solution part directly ;)&lt;br /&gt;&lt;br /&gt;Say, you are running the 9530 simulator (BB JDE version 4.7.0). Open the "9530.bat" file that launches the 9530 version of the simulator. These batch file(s) would be located in application directory's simulator folder or in the directory where you installed the simulator. Open up this file in notepad&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;br /&gt;@echo off &lt;br /&gt;fledge.exe /app=Jvm.dll /handheld=9530 /session=9530 /app-param=DisableRegistration /app-param=JvmAlxConfigFile:9530.xml /data-port=0x4d44 /data-port=0x4d4e /pin=0x2100000A &lt;br /&gt;&lt;br /&gt;Add the attribute &lt;strong&gt;/clear-flash&lt;/strong&gt; after &lt;em&gt;/pin=0x2100000A&lt;/em&gt; (i.e. towards the end of the file). So the modifed batch file would look like:&lt;br /&gt;&lt;br /&gt;@echo off &lt;br /&gt;fledge.exe /app=Jvm.dll /handheld=9530 /session=9530 /app-param=DisableRegistration /app-param=JvmAlxConfigFile:9530.xml /data-port=0x4d44 /data-port=0x4d4e /pin=0x2100000A /clear-flash&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now try launching the simulator and you should not be facing this problem again!!!&lt;br /&gt;&lt;br /&gt;Let me tell you that this is just a temporary solution and I would be on the look out to find a concrete solution to this problem!&lt;br /&gt;&lt;br /&gt;Happy coding ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-3495146753749879076?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/3495146753749879076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=3495146753749879076' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/3495146753749879076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/3495146753749879076'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/11/blackberry-how-to-solving-unable-to.html' title='Blackberry - How To : Solving the &quot;Unable to Connect to the MDS Simulator Service&quot; problem'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-6663394897366924633</id><published>2009-09-17T17:06:00.000-07:00</published><updated>2009-09-17T17:08:06.409-07:00</updated><title type='text'>C# - An Interview w/ the Design Team</title><content type='html'>Hey Guys,&lt;br /&gt;&lt;br /&gt;Check out this interview w/ the C# design team. It's cool! C# is one language I admire the most next to C/C++ ;) Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/"&gt;http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-6663394897366924633?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/6663394897366924633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=6663394897366924633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/6663394897366924633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/6663394897366924633'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/09/c-interview-w-design-team.html' title='C# - An Interview w/ the Design Team'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-5787025620721321666</id><published>2009-08-11T10:04:00.000-07:00</published><updated>2009-08-11T10:10:51.710-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple Main() methods'/><title type='text'>Multiple Main() methods inside a project</title><content type='html'>Hey All,&lt;br /&gt;&lt;br /&gt;I am back :)&lt;br /&gt;&lt;br /&gt;If you try to compile a project having multiple Main() methods, the compiler will throw an error. The simplest solution in this case would be to comment out/ remove teh Main() methods apart from the one we currently wish to use. &lt;br /&gt;&lt;br /&gt;If you do not want to delete the additional Main() methods, do this:&lt;br /&gt;&lt;br /&gt;Choose Project -&gt; &lt;Project_Name&gt; Properties&lt;br /&gt;Choose the "Application" tab&lt;br /&gt;In this tab, there is a drop down list titled "Startup object"&lt;br /&gt;Choose the class that contains the "entry point" that should be run, ignorin the remaining Main() methods&lt;br /&gt;&lt;br /&gt;I found this out in a MS developer site and thought of posting it. Hope this helps somebody! &lt;br /&gt;&lt;br /&gt;Happy Coding :)&lt;br /&gt;&lt;br /&gt;~ Karthik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-5787025620721321666?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/5787025620721321666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=5787025620721321666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/5787025620721321666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/5787025620721321666'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/08/multiple-main-methods-inside-project.html' title='Multiple Main() methods inside a project'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-1465660604876223760</id><published>2009-07-23T10:12:00.000-07:00</published><updated>2009-07-23T10:20:29.240-07:00</updated><title type='text'>Implementing Functions that Times out after a pre-defined time interval</title><content type='html'>Hi All!&lt;br /&gt;&lt;br /&gt;Been a long time! I found this post by &lt;a href="http://weblogs.asp.net/israelio/default.aspx" target="_blank"&gt;Ohad&lt;/a&gt; extremely useful. This is about implementing functions that will time out after a specified time interval. This behavior would be expected in various cases - for example - when you wait for a web service to respond to you. So in this case you may choose to time out after you wait for 's' seconds and try some other service, for instance.&lt;br /&gt;&lt;br /&gt;This is the link -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.asp.net/israelio/archive/2004/06/19/159985.aspx" target="_blank"&gt;http://weblogs.asp.net/israelio/archive/2004/06/19/159985.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;~ Karthik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-1465660604876223760?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/1465660604876223760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=1465660604876223760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/1465660604876223760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/1465660604876223760'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/07/implementing-functions-that-times-out.html' title='Implementing Functions that Times out after a pre-defined time interval'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-7449176618461876139</id><published>2009-06-12T12:21:00.001-07:00</published><updated>2009-12-04T12:10:52.079-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows services'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Debugging Windows Services</title><content type='html'>Hey Guys!&lt;br /&gt;&lt;br /&gt;This post is some info. about windows services. There are lot of blog posts/tutorials floating around in the web that deals with creation of windows services. But this post deals with the methods to debug a windows service. After you start your service you can attach it to a debugger, so that you can debug a windows service! Conventionally it wouldn't be possible to debug a windows service by pressing F5, as you would have known. This is because services are run from the context of a services control manager.&lt;br /&gt;&lt;br /&gt;Now let me stop these stories and get directly in to reality!!&lt;br /&gt;&lt;br /&gt;In a nutshell, these are the steps to be followed:&lt;br /&gt;&lt;br /&gt;* Develop the service&lt;br /&gt;* Start the service&lt;br /&gt;  - Start / Control Panel / Administrative Services / Computer Management&lt;br /&gt;  - Click on Services and Applications / Services&lt;br /&gt;  - Scroll to your service&lt;br /&gt;  - Start it (Right click - start)&lt;br /&gt;* Open your project for this service in VS.Net&lt;br /&gt;* Set breakpoints (Obviously you cannot debug the onStart method or the Main method!)&lt;br /&gt;* Choose Debug -&gt; Processes&lt;br /&gt;* Choose the windows service in the list of "Available Processes"&lt;br /&gt;* Click on "Attach"&lt;br /&gt;&lt;br /&gt;There you go!! Hope this helps somebody!!!&lt;br /&gt;&lt;br /&gt;Want a "professional" view of the same? Refer to,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/7a50syb3(VS.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/7a50syb3(VS.80).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-7449176618461876139?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/7449176618461876139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=7449176618461876139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/7449176618461876139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/7449176618461876139'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/06/debugging-windows-services.html' title='Debugging Windows Services'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-850964094951229946</id><published>2009-06-05T12:30:00.000-07:00</published><updated>2009-06-05T12:47:14.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='get method name'/><category scheme='http://www.blogger.com/atom/ns#' term='c# get instance name'/><title type='text'>Getting the Type of the current instance and Name of the method currently being executed</title><content type='html'>Hi Folks,&lt;br /&gt;&lt;br /&gt;I am back, after a long time :) This post describes how we could get the name of the instance that is currently being executed and also the method name that is currently being executed. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Reflection;&lt;br /&gt;&lt;br /&gt;namespace TestProject&lt;br /&gt;{&lt;br /&gt;    class ToCall&lt;br /&gt;    {&lt;br /&gt;        public ToCall()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine("This is " + this.GetType());&lt;br /&gt;            MethodBase method = MethodInfo.GetCurrentMethod();&lt;br /&gt;            string methodname = method.DeclaringType.FullName + "." + method.Name;&lt;br /&gt;            Console.WriteLine("Method name is " + methodname);&lt;br /&gt;&lt;br /&gt;            sample();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void sample()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine("This is " + this.GetType());&lt;br /&gt;            MethodBase method = MethodInfo.GetCurrentMethod();&lt;br /&gt;            string methodname = method.DeclaringType.FullName + "." + method.Name;&lt;br /&gt;            Console.WriteLine("Method name is " + methodname);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            ToCall d = new ToCall();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I will add some comments soon, just wanted to get started initially!!&lt;br /&gt;&lt;br /&gt;Happy Coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-850964094951229946?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/850964094951229946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=850964094951229946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/850964094951229946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/850964094951229946'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2009/06/getting-type-of-current-instance-and.html' title='Getting the Type of the current instance and Name of the method currently being executed'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-889500765170998307</id><published>2008-10-19T11:54:00.001-07:00</published><updated>2008-10-19T11:55:23.485-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='email validation'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><title type='text'>RegEx - To validate emails...</title><content type='html'>Hey All,&lt;br /&gt;&lt;br /&gt;You can use this to validate emails! &lt;br /&gt;&lt;br /&gt;[a-zA-Z0-9_]+\.{0,1}[a-zA-Z0-9_]*\.{0,1}[a-zA-Z_]*[\@][a-zA-Z]+[\.][a-zA-Z]+[\.]{0,1}[a-zA-Z]*&lt;br /&gt;&lt;br /&gt;Happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-889500765170998307?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/889500765170998307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=889500765170998307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/889500765170998307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/889500765170998307'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2008/10/regex-to-validate-emails.html' title='RegEx - To validate emails...'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-3978713888863231209</id><published>2008-10-11T13:06:00.000-07:00</published><updated>2008-10-11T20:50:41.970-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='query an arraylist'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ to SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='thedotnetway'/><category scheme='http://www.blogger.com/atom/ns#' term='ArrayList'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Power of LINQ - Querying ArrayLists</title><content type='html'>Hey all! &lt;br /&gt;&lt;br /&gt;Welcome back :) &lt;br /&gt;&lt;br /&gt;This posting is about querying &lt;span style="font-weight:bold;"&gt;ArrayLst's&lt;/span&gt; using LINQ. Following is an example of the same. Explanations follow after the code..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;using System;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Collections;&lt;br /&gt;&lt;br /&gt;namespace QueryArrayList&lt;br /&gt;{&lt;br /&gt; public class Report&lt;br /&gt; {&lt;br /&gt;  public int reportNo;&lt;br /&gt;  public string reportName;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public class QueryArrayList&lt;br /&gt; {&lt;br /&gt;  private static bool found = false;&lt;br /&gt;&lt;br /&gt;  public QueryArrayList()&lt;br /&gt;  {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static void Main(string[] args)&lt;br /&gt;  {&lt;br /&gt;   string query_text = "null";&lt;br /&gt;&lt;br /&gt;   if (args.Length == 1)&lt;br /&gt;   {&lt;br /&gt;    query_text = args[0];&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   ArrayList aList = new ArrayList();&lt;br /&gt;&lt;br /&gt;   for (int i=0; i &lt; 10; i ++)&lt;br /&gt;   {&lt;br /&gt;    Report report = new Report();&lt;br /&gt;    report.reportNo = i;&lt;br /&gt;    report.reportName = "Report " + i.ToString();&lt;br /&gt;&lt;br /&gt;    aList.Add(report);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;var query = &lt;br /&gt;(from Report reportList in aList&lt;br /&gt;where reportList.reportName.Contains(query_text)&lt;br /&gt;select new { reportList });&lt;br /&gt;&lt;br /&gt;   if (query != null)&lt;br /&gt;   {&lt;br /&gt;    foreach (var report in query)&lt;br /&gt;    {&lt;br /&gt;     Report rpt = new Report();&lt;br /&gt;     rpt.reportNo = report.reportList.reportNo;&lt;br /&gt;     rpt.reportName = report.reportList.reportName;&lt;br /&gt;&lt;br /&gt;     Console.WriteLine("Report retrieved: Report Number: {0} and Report Name: {1}",rpt.reportNo,rpt.reportName);&lt;br /&gt;&lt;br /&gt;     found = true;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   if (! found)&lt;br /&gt;    Console.WriteLine("Empty result set");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The code is pretty straight forward. So I will get into the LINQ related part directly. There is a class called &lt;span style="font-weight:bold;"&gt;Report&lt;/span&gt; and the class &lt;span style="font-weight:bold;"&gt;QueryArrayList&lt;/span&gt; creates 10 objects of Report. The following LINQ query takes in as a parameter some text that is used to select a set of reports containing that text.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;var query = (from Report reportList in aList&lt;br /&gt;      where reportList.reportName.Contains(query_text)&lt;br /&gt;      select new { reportList });&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here 'aList' is the ArrayList that contains the list of "Report" objects and using this part &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;from Report reportList&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;we specify that we are querying an ArrayList of type "Report".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;where reportList.reportName.Contains(query_text)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above part is to limit rows with the query text and finally&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;select new { reportList }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;is to select the reports satisfying the condition and place it in a variable called reportList&lt;br /&gt;&lt;br /&gt;In the foreach part I get each row in the set, create a new object of type "Report" and print it to the console.&lt;br /&gt;&lt;br /&gt;That's it! We have successfully queried an &lt;span style="font-weight:bold;"&gt;ArrayList&lt;/span&gt;!!&lt;br /&gt;&lt;br /&gt;Happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-3978713888863231209?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/3978713888863231209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=3978713888863231209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/3978713888863231209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/3978713888863231209'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2008/10/power-of-linq-querying-arraylists.html' title='Power of LINQ - Querying ArrayLists'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-75831345981420693</id><published>2008-10-10T14:43:00.000-07:00</published><updated>2008-10-10T23:00:19.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uninstall'/><category scheme='http://www.blogger.com/atom/ns#' term='override install'/><category scheme='http://www.blogger.com/atom/ns#' term='C#.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='custom actions'/><category scheme='http://www.blogger.com/atom/ns#' term='setup projects'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='create setup project'/><title type='text'>Creating a Setup project in VS 2008 w/ Custom Actions</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;This post elaborates &lt;span style="font-weight:bold;"&gt;ALL&lt;/span&gt; the steps required to create a setup project that is used deploy an application, in a step by step manner. What makes this post special is that it deals w/ custom actions. Normal setup projects doesn't allow us to do more than some set of pre-defined actions. So we need to override those settings w/ &lt;span style="font-weight:bold;"&gt;"Custom Installers"&lt;/span&gt;. This post deals w/ the ways to create a custom setup project, that allows you to do specific actions during install/uninstall and various other events as described below. All tutorials out there in the internet tend to leave something or the other as far as I have seen. So I thought that I could post one that describes and/or implements everything that is required for a setup project, so that when you build and test it, everything works. Here we go!&lt;br /&gt;&lt;br /&gt;The solution ("HelloWorld") for this contains 3 projects:&lt;br /&gt;&lt;br /&gt;HelloWorld -&lt;br /&gt;&lt;br /&gt;This is the application. This application just displays a form w/ the message "Hello World" and displays a text area that displays a text file deployed along w/ the setup and displays the message "Nothing to read" if the file is not present (input.txt is the input file copied during setup)&lt;br /&gt;&lt;br /&gt;HelloWorldCustomInstaller -&lt;br /&gt;&lt;br /&gt;This project helps us implement the customized installer. Details later.&lt;br /&gt;&lt;br /&gt;HelloWorldSetup -&lt;br /&gt;&lt;br /&gt;This project is of type "Setup and Deployment". Details later&lt;br /&gt;&lt;br /&gt;You can download the entire solution as a zip file &lt;a href="http://www.utdallas.edu/~kxa060100/Projects/HelloWorld.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; (Tested in Win XP/ VS 2008)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Steps:&lt;br /&gt;&lt;br /&gt;* HelloWorld application: The code for the application in simple&lt;br /&gt;&lt;br /&gt;[Form1.cs]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Collections.Generic;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;using System.ComponentModel;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Data;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;using System.Drawing;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Linq;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Windows.Forms;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.IO;&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;namespace HelloWorld&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt; &lt;br /&gt;public partial class Form1 : Form&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt;     &lt;br /&gt;private string str = "";&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;     &lt;br /&gt;&lt;br /&gt;public Form1()&lt;/span&gt; &lt;span style="font-style: italic;"&gt;        {&lt;/span&gt; &lt;span style="font-style: italic;"&gt;         &lt;br /&gt;InitializeComponent();&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;}&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;     &lt;br /&gt;&lt;br /&gt;private void Form1_Load(object sender, EventArgs e)&lt;/span&gt; &lt;span style="font-style: italic;"&gt;     &lt;br /&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt;         &lt;br /&gt;try&lt;/span&gt; &lt;span style="font-style: italic;"&gt;         &lt;br /&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt;             &lt;br /&gt;StreamReader sin = new StreamReader(new FileStream("input.txt", FileMode.Open));&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;             &lt;br /&gt;&lt;br /&gt;while ((str = sin.ReadLine()) != null)&lt;/span&gt; &lt;span style="font-style: italic;"&gt;             &lt;br /&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt;                 &lt;br /&gt;textBox1.AppendText(str);&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            catch { textBox1.Text = "Nothing to read"; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am not going to explain the code as it is out of scope for this post.&lt;br /&gt;&lt;br /&gt;[Form1.cs Design view]&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gii9gMDmD8M/SO_PWgNbAXI/AAAAAAAAAAM/p1tkRnrXSbI/s1600-h/1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_gii9gMDmD8M/SO_PWgNbAXI/AAAAAAAAAAM/p1tkRnrXSbI/s320/1.JPG" alt="" id="BLOGGER_PHOTO_ID_5255647275674960242" border="0" /&gt;&lt;/a&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;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Here comes the fun part. Let us now discuss the "HelloWorldCustomInstaller" project which is used to create custom actions during installation/uninstallation&lt;br /&gt;&lt;br /&gt; - To create this project you do the following steps&lt;br /&gt; - Right click solution, Choose "New Project" - "Visual C#" - "Windows" - "Class Library"&lt;br /&gt; - Name it "HelloWorldCustomInstaller"&lt;br /&gt; - Delete the default "Program.cs"&lt;br /&gt; - Right click the project "HelloWorldCustomInstaller", Choose Add -&gt; New Item&lt;br /&gt; - In this choose "Installer class"&lt;br /&gt; - The class is created and if you view the code file you can see this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Collections;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;using System.Collections.Generic;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;using System.ComponentModel;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;using System.Configuration.Install;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;using System.Linq;&lt;/span&gt;   &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;namespace HelloWorldCustomInstaller&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt;   &lt;br /&gt;[RunInstaller(true)]&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;public partial class Installer1 : Installer&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt;       &lt;br /&gt;public Installer1()&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;{&lt;/span&gt; &lt;span style="font-style: italic;"&gt;           &lt;br /&gt;InitializeComponent();&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A reference to System.Configuration.Install is required and this is added automatically along w/ the using clause.&lt;br /&gt;&lt;br /&gt;See that the class "Installer1" &lt;span style="font-weight: bold;"&gt;inherits &lt;/span&gt;"Installer". Other requirements are that you should add [RunInstaller(true)] above class definition.&lt;br /&gt;&lt;br /&gt;Now you are all set. To over ride the normal uninstall or install process you need to "override" the corresponding events. The following events are available for you to override:&lt;br /&gt;&lt;br /&gt;  * Commit&lt;br /&gt;  * Install&lt;br /&gt;  * OnAfterInstall&lt;br /&gt;  * OnAfterRollback&lt;br /&gt;  * OnAfterUninstall&lt;br /&gt;  * OnBeforeInstall&lt;br /&gt;  * OnBeforeRollback&lt;br /&gt;  * OnBeforeUninstall&lt;br /&gt;  * OnCommitted&lt;br /&gt;  * OnCommitting&lt;br /&gt;  * Rollback&lt;br /&gt;  * Uninstall&lt;br /&gt;&lt;br /&gt;The names imply the use of each. The custom installer for this project just overrides &lt;span style="font-weight: bold;"&gt;Install &lt;/span&gt;and the &lt;span style="font-weight: bold;"&gt;Uninstall&lt;/span&gt; events. The code is given below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Collections;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Collections.Generic;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.ComponentModel;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Configuration.Install;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.Linq;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;using System.IO;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;namespace HelloWorldCustomInstaller&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    [RunInstaller(true)]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    public partial class HelloWorldInstaller : Installer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        public HelloWorldInstaller()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            InitializeComponent();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        public override void Install(IDictionary stateSaver)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            base.Install(stateSaver);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            //Create a log file in the users desktop [delete it while uninstallation]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                StreamWriter sout = new StreamWriter(new FileStream("C:\\Documents and Settings\\" + Environment.UserName + "\\Desktop\\HelloWorldLog.txt", FileMode.Append));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                sout.WriteLine("Installing HelloWorld " + DateTime.Now.ToString());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                sout.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            catch (InstallException)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        public override void Uninstall(IDictionary savedState)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            base.Uninstall(savedState);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            //Delete the file created&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                if (File.Exists("C:\\Documents and Settings\\" + Environment.UserName + "\\Desktop\\HelloWorldLog.txt"))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                    File.Delete("C:\\Documents and Settings\\" + Environment.UserName + "\\Desktop\\HelloWorldLog.txt");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            catch (InstallException)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;During the "Install" event a log file is created in the user's desktop and during the "Uninstall" event the log file created is deleted. And note that the try - catch blocks catch "InstallException" and not the normal exceptions we usually "catch" (e.g. &lt;b&gt;Exception&lt;/b&gt;).&lt;br /&gt;&lt;br /&gt;* Its now time to get in to creating a setup project, so that this application can be deployed to other computers as well. Follow these steps.&lt;br /&gt;&lt;br /&gt;- Right click on the solution file "HelloWorld"&lt;br /&gt;- Choose Add -&gt; New Project -&gt; Other Project Types -&gt; Setup and Deployment -&gt; Setup Project&lt;br /&gt;- Name the project "HelloWorldSetup"&lt;br /&gt;- The project "HelloWorldSetup" is added to the solution.&lt;br /&gt;- Now click on the project's name and view the toolbars in the solution explorer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gii9gMDmD8M/SO_UejrzrrI/AAAAAAAAAAU/1tMUaMQ7J64/s1600-h/2.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 183px; height: 320px;" src="http://3.bp.blogspot.com/_gii9gMDmD8M/SO_UejrzrrI/AAAAAAAAAAU/1tMUaMQ7J64/s320/2.JPG" alt="" id="BLOGGER_PHOTO_ID_5255652911604805298" border="0" /&gt;&lt;/a&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;&lt;br /&gt;&lt;br /&gt;- Here the 2nd icon is the "File System Editor", after this icon we have Registry editor, File Types, User Interface, Custom actions editor, Launch conditions editor&lt;br /&gt;- Click on "File System Editor"&lt;br /&gt;- You will see the following page w/ 2 panes: The left pane has the following tree structure&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt; File System on Target Machine&lt;/span&gt;&lt;br /&gt;   Application Folder&lt;br /&gt;   User's Desktop&lt;br /&gt;   User's Program Menu&lt;br /&gt;&lt;br /&gt; - Click on Application Folder&lt;br /&gt; - Now right click on the right pane choose Add -&gt; Project Output&lt;br /&gt; - In the dialog that appears there is a drop down box w/ 2 items&lt;br /&gt; &lt;br /&gt;    * HelloWorld (our application)&lt;br /&gt;    * HelloWorldCustomInstaller (custom installer class)&lt;br /&gt; - Choose HelloWorld, in the list box below, choose "Primary Output", click OK&lt;br /&gt; - Repeat the same steps and not add the primary output of "HelloWorldCustomInstalle"&lt;br /&gt; - Now create a text file called "input.txt"&lt;br /&gt; - Right click in the right pane again, choose Add -&gt; File&lt;br /&gt; - The "Add Files" dialog box appears, choose the "input.txt" file&lt;br /&gt; - Following is the view after all of this is done&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_gii9gMDmD8M/SO_WeLQqoRI/AAAAAAAAAAc/Okxcb-2qPL8/s1600-h/3.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 435px; height: 160px;" src="http://4.bp.blogspot.com/_gii9gMDmD8M/SO_WeLQqoRI/AAAAAAAAAAc/Okxcb-2qPL8/s320/3.JPG" alt="" id="BLOGGER_PHOTO_ID_5255655104071770386" border="0" /&gt;&lt;/a&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; - Now click the "Custom Actions Editor" icon in the solution explorer (refer image above - 4th icon from "File System Editor"&lt;br /&gt; - You will see the following tree in this window&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Custom Actions&lt;/span&gt;&lt;br /&gt;    Install&lt;br /&gt;    Commit&lt;br /&gt;    Rollback&lt;br /&gt;    Uninstall&lt;br /&gt;&lt;br /&gt; - Right click on Install, choose "Add Custom Action". In the dialog box that appears choose&lt;br /&gt;    File System on Target Machine -&gt; Application Folder -&gt; Primary output from HelloWorldCustomInstaller (Active)&lt;br /&gt; - Repeat the same procedure and add a custom action to Uninstall&lt;br /&gt; - We are doing this because during the setup we need the custom actions defined for Install/Uninstall to be called. Without this step the custom actions won't be called&lt;br /&gt;&lt;br /&gt;This is a screen print of the custom actions editor&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gii9gMDmD8M/SO_Z1Ye2HQI/AAAAAAAAAAk/tQgJm80ABD0/s1600-h/4.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_gii9gMDmD8M/SO_Z1Ye2HQI/AAAAAAAAAAk/tQgJm80ABD0/s320/4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5255658801292778754" /&gt;&lt;/a&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;That's it! You are ready!&lt;br /&gt;&lt;br /&gt;Build the solution and the setup files will be present the "Debug" folder of the "HelloWorldSetup" project!&lt;br /&gt;&lt;br /&gt;Leave a comment if there are any mistakes in the post and i will correct them. Also let me know your questions/ comments/ suggestions or whatever!&lt;br /&gt;&lt;br /&gt;Happy Coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-75831345981420693?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/75831345981420693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=75831345981420693' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/75831345981420693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/75831345981420693'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2008/10/creating-setup-project-in-vs-2008-w.html' title='Creating a Setup project in VS 2008 w/ Custom Actions'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gii9gMDmD8M/SO_PWgNbAXI/AAAAAAAAAAM/p1tkRnrXSbI/s72-c/1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459928262138962421.post-4544029218126865971</id><published>2008-10-10T08:39:00.000-07:00</published><updated>2008-10-10T08:46:39.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COM'/><category scheme='http://www.blogger.com/atom/ns#' term='C#.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='thedotnetway'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Hey!</title><content type='html'>Hey!&lt;br /&gt;&lt;br /&gt;Welcome to the .Net way! This blog is for posting a lot of things related to C#/ C#.Net that people find it almost impossible after long hours of search. Yeah, I wasted a lot of time in searching for these things and so wanted to keep these things easily accessible, so that it would also serve as a reference to me.&lt;br /&gt;&lt;br /&gt;I have had a number of blogs over various time periods, but I never had the time to maintain them, as I am not so good in writing stories :) So I thought I will do what I am capable of!&lt;br /&gt;&lt;br /&gt;And so, here I am!&lt;br /&gt;&lt;br /&gt;Thanks for visiting this blog! Welcome again and watch out for the posts!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459928262138962421-4544029218126865971?l=thedotnetway.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thedotnetway.blogspot.com/feeds/4544029218126865971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459928262138962421&amp;postID=4544029218126865971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/4544029218126865971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459928262138962421/posts/default/4544029218126865971'/><link rel='alternate' type='text/html' href='http://thedotnetway.blogspot.com/2008/10/hey.html' title='Hey!'/><author><name>Karthik</name><uri>http://www.blogger.com/profile/13693126031009684584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_gii9gMDmD8M/SPDMhRXcjxI/AAAAAAAAAAw/zPYjL-XVu5s/S220/c_sharp_front.jpg'/></author><thr:total>0</thr:total></entry></feed>
