<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Eugene's Think Tank</title>
    <link rel="self" type="application/xml" href="http://geekswithblogs.net/EKosnyrev/Atom.aspx" />
    <subtitle type="html"> </subtitle>
    <id>http://geekswithblogs.net/EKosnyrev/Default.aspx</id>
    <author>
        <name>EKosnyrev</name>
        <uri>http://geekswithblogs.net/EKosnyrev/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 0.0.0.0">Subtext</generator>
    <updated>2008-12-04T13:08:55Z</updated>
    <entry>
        <title>Using Windows Management Instrumentation  - It's Easy</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/EKosnyrev/archive/2008/12/04/using-windows-management-instrumentation----its-easy.aspx" />
        <id>http://geekswithblogs.net/EKosnyrev/archive/2008/12/04/using-windows-management-instrumentation----its-easy.aspx</id>
        <published>2008-12-04T09:42:33-06:00:00</published>
        <updated>2008-12-04T13:08:55Z</updated>
        <content type="html">&lt;p&gt;&lt;font face="Courier New"&gt;Want to know what Services or/and Processes are running currently on your PC? In one of my previous project I implemented small diagnostic utility which showed what processes and services are running on host box. Here is the example how to obtain this information.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Collections.Generic;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Linq;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Text;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Management;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;namespace&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; ManagementInstrumentation&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;class &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Program&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;static &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;void&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; Main(&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;string&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;[] args)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            ListServices();&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Console&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.ReadLine();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            ListProcesses();&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Console&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.ReadLine();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;private &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;static &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;void&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; ListServices()&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementScope&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; scope = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementScope&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;();&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            System.Management.&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ObjectQuery&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; query = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ObjectQuery&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;(&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; BACKGROUND: aqua; COLOR: #a31515"&gt;"select * from Win32_Service"&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;);&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; searcher = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;(scope, query);&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;foreach&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;(&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementBaseObject&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; o &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;in&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; searcher.Get())&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Console&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.WriteLine(&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"Service {0} is started = {1}"&lt;/span&gt;&lt;strong&gt;, o[&lt;/strong&gt;&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"Name"&lt;/span&gt;&lt;strong&gt;], o[&lt;/strong&gt;&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"Started"&lt;/span&gt;&lt;strong&gt;]);&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;foreach&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; (&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;var&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; prop &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;in&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; o.Properties)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Console&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.WriteLine(&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"{0} = {1}"&lt;/span&gt;&lt;strong&gt;, prop.Name, prop.Value);&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;private &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;static &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;void&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; ListProcesses()&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementScope&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; scope = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementScope&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;();&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            System.Management.&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ObjectQuery&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; query = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ObjectQuery&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;(&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; BACKGROUND: aqua; COLOR: #a31515"&gt;"select * from Win32_Process"&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;);&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; searcher = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;(scope, query);&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;foreach&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; (&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementBaseObject&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; o &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;in&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; searcher.Get())&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Console&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.WriteLine(&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"Properties for Process {0}"&lt;/span&gt;&lt;strong&gt;, o[&lt;/strong&gt;&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"Name"&lt;/span&gt;&lt;strong&gt;]);&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;foreach&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; (&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;var&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; prop &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;in&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; o.Properties)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Console&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.WriteLine(&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"{0} = {1}"&lt;/span&gt;&lt;strong&gt;, prop.Name, prop.Value);&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green"&gt;//In this method I want to list just running services&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green"&gt;//I'm using LINQ query to select started services&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;private &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;static &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;void&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; ListRunningServices()&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementScope&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; scope = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementScope&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;();&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            System.Management.&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ObjectQuery&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; query = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ObjectQuery&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;(&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; BACKGROUND: aqua; COLOR: #a31515"&gt;"select * from Win32_Service"&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;);&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; searcher = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementObjectSearcher&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;(scope, query);&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;var&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; services = searcher.Get();&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;var&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; started = &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;from&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;ManagementBaseObject&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; s &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;in&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; services&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                          &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;from&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;PropertyData&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; p &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;in&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; s.Properties&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                          &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;where&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; p.Name == &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; BACKGROUND: aqua; COLOR: #a31515"&gt;"Started"&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &amp;amp;&amp;amp; p.Value.ToString().ToLower() == &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; BACKGROUND: aqua; COLOR: #a31515"&gt;"true"&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                          &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;select&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; s;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;foreach&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; (&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;var&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; o &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;in&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt; started)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Console&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.WriteLine(&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"Service {0} is started "&lt;/span&gt;&lt;strong&gt;, o[&lt;/strong&gt;&lt;span style="BACKGROUND: aqua; COLOR: #a31515"&gt;"Name"&lt;/span&gt;&lt;strong&gt;]);&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;        }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    }&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt"&gt;}&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt; &lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;//Happy Coding&lt;/p&gt;&lt;img src="http://geekswithblogs.net/EKosnyrev/aggbug/127577.aspx" width="1" height="1" /&gt;</content>
    </entry>
    <entry>
        <title>Singleton Design Pattern in C#</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/EKosnyrev/archive/2008/11/12/singleton-design-pattern-in-c.aspx" />
        <id>http://geekswithblogs.net/EKosnyrev/archive/2008/11/12/singleton-design-pattern-in-c.aspx</id>
        <published>2008-11-12T13:22:43-06:00:00</published>
        <updated>2009-09-09T09:48:01Z</updated>
        <content type="html">&lt;font color="#008000" size="2"&gt;&lt;font color="#808080" size="3"&gt;&lt;font color="#008000" size="2"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;/* The Singleton pattern assures that there is one and only one instance&lt;br /&gt;
of a class, and provides a global&lt;br /&gt;
point of access to it. There are any number of cases in programming&lt;br /&gt;
where you need to make sure that there can be one and only one&lt;br /&gt;
instance of a class. For example, your system can have only one&lt;br /&gt;
web service manager, or a single point of access to a&lt;br /&gt;
database.&lt;br /&gt;
The easiest way to make a class that can have only one instance is to&lt;br /&gt;
embed a static variable inside the class that A static&lt;br /&gt;
variable is one for which there is only one instance, no matter how&lt;br /&gt;
many instances there are of the class. To prevent instantiating the class&lt;br /&gt;
more than once, we make the constructor private so an instance can&lt;br /&gt;
only be created from within the static method of the class. &lt;br /&gt;
Read-only property Instance check if static variable _instance is initialized,&lt;br /&gt;
if not property will return the new instance od Singleton class, otherwise the&lt;br /&gt;
existing instance will be returned.&lt;br /&gt;
 */&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font face="Courier New"&gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;namespace DesignPatterns&lt;br /&gt;
{&lt;br /&gt;
    public sealed class Singleton&lt;br /&gt;
    {&lt;br /&gt;
        private static Singleton _instance;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;        private Singleton()&lt;br /&gt;
        {/* no code */}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;        public static Singleton Instance&lt;br /&gt;
        {&lt;br /&gt;
            get&lt;br /&gt;
            {&lt;br /&gt;
                if(_instance == null)&lt;br /&gt;
                {&lt;br /&gt;
                    _instance = new Singleton();&lt;br /&gt;
                }&lt;br /&gt;
                return _instance;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;        public static void SomeMethod()&lt;br /&gt;
        {&lt;br /&gt;
            //Do some job&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;//The Test case for this Singleton Class&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Diagnostics;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;namespace DesignPatterns&lt;br /&gt;
{&lt;br /&gt;
    public class Program&lt;br /&gt;
    {&lt;br /&gt;
        public static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Singleton inst = Singleton.Instance;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;            Console.WriteLine("Singleton ID is {0}", inst.GetHashCode().ToString());&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;            Singleton inst2 = Singleton.Instance;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;            Console.WriteLine("Singleton ID is {0}", inst2.GetHashCode().ToString());&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;            Debug.Assert(inst.GetHashCode() == inst2.GetHashCode(), "ID is not the Same!");&lt;br /&gt;
            Console.ReadLine();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font face="Courier New"&gt;//If you will run this quick test you will that every time the property Insance is called it returns the same object.&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;pre&gt;//Happy Coding!!!&lt;/pre&gt;
&lt;font size="2"&gt;&lt;/font&gt;&lt;img src="http://geekswithblogs.net/EKosnyrev/aggbug/126978.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/EKosnyrev/comments/126978.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/EKosnyrev/comments/commentRss/126978.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/EKosnyrev/services/trackbacks/126978.aspx</trackback:ping>
    </entry>
    <entry>
        <title>How to Debug Windows Service</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/EKosnyrev/archive/2008/10/29/how-to-debug-windows-service.aspx" />
        <id>http://geekswithblogs.net/EKosnyrev/archive/2008/10/29/how-to-debug-windows-service.aspx</id>
        <published>2008-10-29T10:16:21-05:00:00</published>
        <updated>2009-09-09T12:18:47Z</updated>
        <content type="html">&lt;p&gt;Sometimes windows service debugging is really tricky. Usually , during development, developer should implement some test harness application with UI to run and test functionality being developed. But when it comes to debug real windows service which hosts the objects which do the real job - it's a headache.&lt;/p&gt;
&lt;p&gt; Amazingly, in NET platform there is a simple and straightforward way to debug a windows service.&lt;/p&gt;
 Consider the following code sample:&lt;br /&gt;
&lt;font size="2"&gt;
&lt;p&gt;&lt;font face="Arial"&gt;using System.ServiceProcess;&lt;br /&gt;
namespace MyService &lt;br /&gt;
{&lt;br /&gt;
 public partial class MyService : ServiceBase&lt;br /&gt;
 {&lt;br /&gt;
    public MyService() &lt;br /&gt;
    {&lt;br /&gt;
         InitializeComponent();&lt;br /&gt;
    }&lt;br /&gt;
  protected override void OnStart(string[] args) &lt;br /&gt;
   {&lt;br /&gt;
        System.Diagnostics.Debugger.Launch(); //This will launch a debugger &lt;br /&gt;
        //Do the real job MyWorker.Start();&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;After you installed and launched the service , you will be prompted to use Visual Studio to attach to the process. Click "Attach" button and Visual Studio will pop up and here you go.&lt;img src="http://geekswithblogs.net/EKosnyrev/aggbug/126339.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/EKosnyrev/comments/126339.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/EKosnyrev/comments/commentRss/126339.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/EKosnyrev/services/trackbacks/126339.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Factory Design Pattern</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/EKosnyrev/archive/2008/10/28/factory-design-pattern.aspx" />
        <id>http://geekswithblogs.net/EKosnyrev/archive/2008/10/28/factory-design-pattern.aspx</id>
        <published>2008-10-28T10:48:26-05:00:00</published>
        <updated>2009-09-09T12:30:50Z</updated>
        <content type="html">&lt;p&gt;&lt;font face="Arial"&gt;Today I will show how to implement factory design pattern in NET platform.&lt;br /&gt;
One type of pattern that we see again and again in OO programs is the Factory pattern.&lt;br /&gt;
A Factory pattern is one that returns an instance of one of several possible classes, depending on the data provided to it.&lt;br /&gt;
Consider the following C# code sample:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;using System;&lt;br /&gt;
using System.Runtime.Remoting;&lt;br /&gt;
namespace Factory&lt;br /&gt;
{&lt;br /&gt;
 /// /// implements factory design pattern ///&lt;br /&gt;
 public static class WorkerFactory&lt;br /&gt;
 {&lt;br /&gt;
  private static string _asmName = "MyAssembly.";&lt;br /&gt;
  &lt;br /&gt;
  //returns new worker object&lt;br /&gt;
  public static void CreateWorker(out MyType mytypeobject, string strtype) // this method takes 2 arguments: 1-st for the object you want to instantiate and the second one for type name. &lt;br /&gt;
  {&lt;br /&gt;
   MyType sys = null;&lt;br /&gt;
   mytypeobject = null;&lt;br /&gt;
   string fullname = _asmName+strtype;&lt;br /&gt;
   try {&lt;br /&gt;
     ObjectHandle handle = System.Activator.CreateInstance(_asmName, fullname); //this method takes assembly name and type name to create an instance of the object&lt;br /&gt;
     MyType sys = (MyType)handle.Unwrap(); //You need to cast it to particular kind of the object&lt;br /&gt;
    }&lt;br /&gt;
    catch&lt;br /&gt;
    {&lt;br /&gt;
     throw new ApplicationException("Worker Factory can not create and object from assembly "+_asmName+" with name "+ns+".");&lt;br /&gt;
    }&lt;br /&gt;
    finally&lt;br /&gt;
    {&lt;br /&gt;
     if(sys != null) mytypeobject = sys; &lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
 } &lt;/font&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/EKosnyrev/aggbug/126290.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/EKosnyrev/comments/126290.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/EKosnyrev/comments/commentRss/126290.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/EKosnyrev/services/trackbacks/126290.aspx</trackback:ping>
    </entry>
</feed>
