<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">sameerm's WebLog</title><subtitle type="html" /><id>http://blogs.msdn.com/sameerm/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sameerm/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/sameerm/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2004-09-01T20:36:00Z</updated><entry><title>Dumping objects fields and methods to console</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sameerm/archive/2004/09/02/224538.aspx" /><id>http://blogs.msdn.com/sameerm/archive/2004/09/02/224538.aspx</id><published>2004-09-02T09:42:00Z</published><updated>2004-09-02T09:42:00Z</updated><content type="html">&lt;p&gt;The classes in the Reflection namespace give you the ability to view a class(objects) fields and methods. Overriding the ToString method provides a quick way to spew the objects current state to the console. You don't need to write code to access each field individually. This is particularly helpful if the class contains a lot of mebers. &lt;/p&gt; &lt;p&gt;The UsingGetValue method below provides some interesting insight on how FieldInfo::GetValue method works. The parameter to get &lt;font color="#808080" size="2"&gt;&lt;font color="#000000" size="3"&gt;value is the object instance for which to get the value. The call to get value in the code below &lt;/font&gt;is&amp;nbsp;&lt;/font&gt;&amp;nbsp;myClass1.UsingGetValue(myClass2); &lt;/p&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;&lt;font color="#ff0000" size="3"&gt;// This&amp;nbsp;will &amp;nbsp;Print 10, World and not 5, Hello&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="3"&gt;// Although we are calling this on myClass1 instance the method implementation calls GetVaue as&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="3"&gt;// val = f.GetValue(target).ToString();&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="3"&gt;//The target in the call below is&amp;nbsp; myClass2&lt;br /&gt;//myClass1.UsingGetValue(myClass2); &lt;br /&gt;// As a result the members of target i.e. myClass2 will be returned and not myClass1.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;#region&lt;/font&gt;&lt;font size="2"&gt; Using directives&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;using&lt;/font&gt;&lt;font size="2"&gt; System;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.Collections.Generic;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.Text;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.Reflection;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;#endregion&lt;/p&gt; &lt;p&gt;namespace&lt;/font&gt;&lt;font size="2"&gt; Main&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; someInteger = 10; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;//Some fields&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; someMsg; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Some method.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; MyClass(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; i, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; str)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.someInteger = i;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.someMsg = str;&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; Main(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt;[] args)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/font&gt;&lt;font size="2"&gt; myClass1 = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/font&gt;&lt;font size="2"&gt;(5, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Hello"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;myClass1.ToString();&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine();&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine();&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// The code below show how the GeValue method works.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/font&gt;&lt;font size="2"&gt; myClass2 = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/font&gt;&lt;font size="2"&gt;(10, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"World"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;myClass2 with member values 10 and World.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Calling myClass1.UsingGetValue(myClass2);"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;font color="#808080" size="2"&gt;// This&amp;nbsp;will &amp;nbsp;Print 10, World and not 5, Hello&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Although we are calling this on myClass1 instance the method implementation calls GetVaue as&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// val = f.GetValue(target).ToString();&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;//The target in the call below is &lt;br /&gt;&lt;/font&gt;myClass1.UsingGetValue(myClass2); &lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Press any key ..."&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.Read();&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Override to string to dump the objects field and method before calling the default base class implementation&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;override&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; ToString()&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; val;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Type&lt;/font&gt;&lt;font size="2"&gt; t = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/font&gt;&lt;font size="2"&gt;); &lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Get the type of the class we are interested..in this case ourself&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Specifies flags that control binding and the way in which the search for members and types is conducted by reflection. &lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt; bf = &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.DeclaredOnly | &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.Public |&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.GetProperty | &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.NonPublic | &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.Instance;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Filed Info:"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;FieldInfo&lt;/font&gt;&lt;font size="2"&gt;[] fields = t.GetFields(bf); &lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Get the fileds into an array.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;FieldInfo&lt;/font&gt;&lt;font size="2"&gt; f &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; fields)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.Write(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"\nField Name: "&lt;/font&gt;&lt;font size="2"&gt; + f.Name + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" Value: "&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// The parameter to get value is the object instance for which to get the value&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;val = f.GetValue(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;).ToString();&lt;/p&gt; &lt;p&gt;System.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.Write(val);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;FieldAccessException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"FieldAccessException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;TargetException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"TargetException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;ExecutionEngineException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"ExecutionEngineException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MemberAccessException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"MemberAccessException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Exception : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;""&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;""&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Method Info:"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MethodInfo&lt;/font&gt;&lt;font size="2"&gt;[] methodInfo = t.GetMethods(bf);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MethodInfo&lt;/font&gt;&lt;font size="2"&gt; mi &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; methodInfo)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.Write(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"\nField Name: "&lt;/font&gt;&lt;font size="2"&gt; + mi.Name + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" Value: "&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;val = mi.Name;&lt;/p&gt; &lt;p&gt;System.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.Write(val);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MethodAccessException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"MethodAccessException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;TargetException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"TargetException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;ExecutionEngineException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"ExecutionEngineException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MemberAccessException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"MemberAccessException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Exception : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;base&lt;/font&gt;&lt;font size="2"&gt;.ToString();&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; UsingGetValue(&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/font&gt;&lt;font size="2"&gt; target)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; val;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Type&lt;/font&gt;&lt;font size="2"&gt; t = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyClass&lt;/font&gt;&lt;font size="2"&gt;); &lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Get the type of the class we are interested..in this case ourself&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Specifies flags that control binding and the way in which the search for members and types is conducted by reflection. &lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt; bf = &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.DeclaredOnly | &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.Public |&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.GetProperty | &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.NonPublic | &lt;/font&gt;&lt;font color="#008080" size="2"&gt;BindingFlags&lt;/font&gt;&lt;font size="2"&gt;.Instance;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Filed Info:"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;FieldInfo&lt;/font&gt;&lt;font size="2"&gt;[] fields = t.GetFields(bf); &lt;/font&gt;&lt;font color="#808080" size="2"&gt;// Get the fileds into an array.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;FieldInfo&lt;/font&gt;&lt;font size="2"&gt; f &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; fields)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.Write(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"\nField Name: "&lt;/font&gt;&lt;font size="2"&gt; + f.Name + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" Value: "&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;// The parameter to get value is the object instance for which to get the value&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;val = f.GetValue(target).ToString();&lt;/p&gt; &lt;p&gt;System.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.Write(val);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;FieldAccessException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"FieldAccessException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;TargetException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"TargetException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;ExecutionEngineException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"ExecutionEngineException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MemberAccessException&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"MemberAccessException : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt; excp)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Exception : "&lt;/font&gt;&lt;font size="2"&gt; + excp.Message);&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=224538" width="1" height="1"&gt;</content><author><name>sameerm</name><uri>http://blogs.msdn.com/members/sameerm.aspx</uri></author></entry><entry><title>Connecting to Console session on a Remote server.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sameerm/archive/2004/09/01/224370.aspx" /><id>http://blogs.msdn.com/sameerm/archive/2004/09/01/224370.aspx</id><published>2004-09-02T03:36:00Z</published><updated>2004-09-02T03:36:00Z</updated><content type="html">&lt;p class="relTopics"&gt;When you use Remote Desktop Connetion (Start-&amp;gt;Programs-&amp;gt;Accessories-&amp;gt;Communications-&amp;gt;Remote Desktop Connection) to remote into an XP machine you get connected to the console session. I could not find a way to connect to the console session of a Win2K3 server using the Remote Desktop Connection UI Options button. &lt;/p&gt; &lt;p class="relTopics"&gt;The trick is to use the command line with the /console argument.&amp;nbsp; &lt;/p&gt; &lt;p class="relTopics"&gt;&lt;strong&gt;mstsc /v:servername /console&lt;/strong&gt;&lt;/p&gt; &lt;p class="relTopics"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="relTopics"&gt;&lt;strong&gt;Here is the help from MSDN. &lt;/strong&gt;&lt;/p&gt; &lt;p class="relTopics"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Mstsc&lt;/h1&gt; &lt;p&gt;Creates connections to terminal servers or other remote computers, edits an existing Remote Desktop Connection (.rdp) configuration file, and migrates legacy connection files that were created with Client Connection Manager to new .rdp connection files.&lt;/p&gt; &lt;h2&gt;Syntax&lt;/h2&gt; &lt;p&gt;&lt;b&gt;mstsc.exe&lt;/b&gt; {&lt;i&gt;ConnectionFile&lt;/i&gt; | &lt;b&gt;/v:&lt;/b&gt;&lt;i&gt;ServerName&lt;/i&gt;[&lt;b&gt;:&lt;/b&gt;&lt;i&gt;Port&lt;/i&gt;]} [&lt;b&gt;/console&lt;/b&gt;] [&lt;b&gt;/f&lt;/b&gt;] [&lt;b&gt;/w:&lt;/b&gt;&lt;i&gt;Width&lt;/i&gt; &lt;b&gt;/h:&lt;/b&gt;&lt;i&gt;Height&lt;/i&gt;] &lt;/p&gt; &lt;p&gt;&lt;b&gt;mstsc.exe&lt;/b&gt; &lt;b&gt;/edit&lt;/b&gt;&lt;b&gt;"&lt;/b&gt;&lt;i&gt;ConnectionFile&lt;/i&gt;&lt;b&gt;"&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;mstsc.exe&lt;/b&gt; &lt;b&gt;/migrate&lt;/b&gt;&lt;/p&gt; &lt;h2&gt;Parameters&lt;/h2&gt; &lt;dl&gt; &lt;dt&gt;&lt;i&gt;ConnectionFile&lt;/i&gt; &lt;dd&gt;Specifies the name of an .rdp file for the connection. &lt;dt&gt;&lt;b&gt;/v:&lt;/b&gt;&lt;i&gt;ServerName&lt;/i&gt;[&lt;b&gt;:&lt;/b&gt;&lt;i&gt;Port&lt;/i&gt;] &lt;dd&gt;Specifies the remote computer and, optionally, the port number to which you want to connect. &lt;dt&gt;&lt;b&gt;/console&lt;/b&gt; &lt;dd&gt;Connects to the console session of the specified &lt;noloc&gt;Windows Server&amp;nbsp;2003&lt;/noloc&gt; family operating system. &lt;dt&gt;&lt;b&gt;/f&lt;/b&gt; &lt;dd&gt;Starts Remote Desktop connection in full-screen mode. &lt;dt&gt;&lt;b&gt;/w:&lt;/b&gt;&lt;i&gt;Width&lt;/i&gt; &lt;b&gt;/h:&lt;/b&gt;&lt;i&gt;Height&lt;/i&gt; &lt;dd&gt;Specifies the dimensions of the Remote Desktop screen. &lt;dt&gt;&lt;b&gt;/edit&lt;/b&gt;&lt;b&gt;"&lt;/b&gt;&lt;i&gt;ConnectionFile&lt;/i&gt;&lt;b&gt;"&lt;/b&gt; &lt;dd&gt;Opens the specified .rdp file for editing. &lt;dt&gt;&lt;b&gt;/migrate&lt;/b&gt; &lt;dd&gt;Migrates legacy connection files that were created with Client Connection Manager to new .rdp connection files. &lt;/dd&gt;&lt;/dl&gt; &lt;h2&gt;Remarks&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;You must be an administrator on the server to which you are connecting to create a remote console connection. &lt;li&gt;default.rdp is stored for each user as a hidden file in My Documents. User created .rdp files are stored by default in My Documents but can be moved anywhere. &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Examples&lt;/h2&gt; &lt;p&gt;To connect to the console session of a server, type:&lt;/p&gt; &lt;p&gt;&lt;b&gt;mstsc /console&lt;/b&gt;&lt;/p&gt; &lt;p&gt;To open a file called filename.rdp for editing, type:&lt;/p&gt; &lt;p&gt;&lt;b&gt;mstsc /edit filename.rdp&lt;/b&gt;&lt;/p&gt;&lt;noloc&gt; &lt;h2&gt;Formatting legend&lt;/h2&gt; &lt;p class="relTopics"&gt; &lt;table class="UAweb" width="90%"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;th&gt;Format&lt;/th&gt; &lt;th&gt;Meaning&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;Italic&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Information that the user must supply&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Bold&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Elements that the user must type exactly as shown&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Ellipsis (...)&lt;/td&gt; &lt;td&gt;Parameter that can be repeated several times in a command line&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Between brackets ([])&lt;/td&gt; &lt;td&gt;Optional items&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Between braces ({}); choices separated by pipe (|). Example: {even|odd}&lt;/td&gt; &lt;td&gt;Set of choices from which the user must choose only one&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;Courier font&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Code or program output&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/noloc&gt;&lt;/p&gt; &lt;p&gt; &lt;p id="relTopics"&gt;Related Topics&lt;/p&gt; &lt;p class="relTopics"&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=224370" width="1" height="1"&gt;</content><author><name>sameerm</name><uri>http://blogs.msdn.com/members/sameerm.aspx</uri></author></entry></feed>