<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.wintellect.com/CS/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jeffrey Richter's Blog</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>We Are Hiring!</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2012/01/24/we-are-hiring.aspx</link><pubDate>Tue, 24 Jan 2012 13:59:40 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:20552</guid><dc:creator>JeffreyR</dc:creator><slash:comments>0</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/20552.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=20552</wfw:commentRss><description>&lt;p&gt;Business is good and we need YOU! Wintellect is currently seeking senior level technical development resources for both contract and permanent employment for our current client projects. If you want the challenge of keeping up with co-workers like Jeffrey Richter, Jeff Prosise, Keith Rome, or Jeremy Likness, have we got the opportunity of a lifetime. Please have lots of hands on development experience in the following technologies: C#, &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; MVC, WPF, WCF, Silverlight and SQL Server. Experience with HTML5 and jQuery would be ideal also. If you can't tell, it's all cutting edge here at Wintellect so if you like doing the latest technology we'd love to talk with you. Please forward your resume and availability to Barbara Keihm, Director of Human Resources,&lt;a href="mailto:bkeihm@wintellect.com"&gt;bkeihm@wintellect.com&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=20552" width="1" height="1"&gt;</description></item><item><title>My .NET Nuggets Keynote Talk From Houston Tech Fest October 15th, 2011</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/12/04/my-net-nuggets-keynote-talk-from-houston-tech-fest-october-15th-2011.aspx</link><pubDate>Sun, 04 Dec 2011 23:41:54 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:20406</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/20406.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=20406</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://usergroup.tv/videos/net-nuggets---houston-tech-fest-keynote"&gt;http://usergroup.tv/videos/net-nuggets---houston-tech-fest-keynote&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=20406" width="1" height="1"&gt;</description></item><item><title>Core .NET Types Usable from a Metro Style Application</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/09/20/core-net-types-usable-from-a-metro-style-application.aspx</link><pubDate>Tue, 20 Sep 2011 23:52:26 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:20243</guid><dc:creator>JeffreyR</dc:creator><slash:comments>3</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/20243.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=20243</wfw:commentRss><description>&lt;p&gt;When you create a new .NET Metro style application in Visual Studio, it spits out a project template that doesn't reference any .NET assemblies. Well, this isn't completely true, because when you run the C# compiler it references MSCorLib.dll by default. For a Metro style application, the referenced MSCorLib.dll contains a bunch of TypeForwardedToAttribute attributes (&lt;a href="http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.typeforwardedtoattribute.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.typeforwardedtoattribute.aspx&lt;/a&gt;). This means that it exposes a bunch of types that you can use from your Metro style application that are actually implemented in various other assemblies. I wrote a small tool that reflects over this MSCorLib.dll are shows all of the core .NET types. The output of the tool is shown below. I grouped types by namespace and under each namespace I show the name of the type and the name of the assembly that defines the type in square brackets. Any type with a back tick in it (like Action`1) represents a generic type. 
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`1                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`2                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`3                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`4                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`5                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`6                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`7                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Action`8                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Activator                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AggregateException                                 [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ArgumentException                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ArgumentNullException                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ArgumentOutOfRangeException                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ArithmeticException                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Array                                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ArraySegment`1                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ArrayTypeMismatchException                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AsyncCallback                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Attribute                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AttributeTargets                                   [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AttributeUsageAttribute                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BadImageFormatException                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BitConverter                                       [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Boolean                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Byte                                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Char                                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CLSCompliantAttribute                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Convert                                            [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DataMisalignedException                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DateTime                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DateTimeKind                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DateTimeOffset                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DayOfWeek                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Decimal                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Delegate                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DivideByZeroException                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DllNotFoundException                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Double                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Enum                                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Environment                                        [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EnvironmentVariableTarget                          [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventArgs                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventHandler                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventHandler`1                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Exception                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FlagsAttribute                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FormatException                                    [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`1                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`2                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`3                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`4                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`5                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`6                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`7                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`8                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Func`9                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GC                                                 [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GCCollectionMode                                   [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Guid                                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IAsyncResult                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IComparable                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IComparable`1                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ICustomFormatter                                   [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IDisposable                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEquatable`1                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IFormatProvider                                    [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IFormattable                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IndexOutOfRangeException                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Int16                                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Int32                                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Int64                                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IntPtr                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InvalidCastException                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InvalidOperationException                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InvalidTimeZoneException                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IObservable`1                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IObserver`1                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IProgress`1                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Lazy`1                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Math                                               [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MemberAccessException                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MidpointRounding                                   [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MissingMemberException                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MTAThreadAttribute                                 [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MulticastDelegate                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NotImplementedException                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NotSupportedException                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Nullable                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Nullable`1                                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NullReferenceException                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Object                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ObjectDisposedException                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ObsoleteAttribute                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OperationCanceledException                         [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OutOfMemoryException                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OverflowException                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ParamArrayAttribute                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   PlatformNotSupportedException                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Predicate`1                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Progress`1                                         [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Random                                             [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RankException                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RuntimeFieldHandle                                 [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RuntimeMethodHandle                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RuntimeTypeHandle                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SByte                                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Single                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   STAThreadAttribute                                 [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   String                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StringComparer                                     [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StringComparison                                   [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StringSplitOptions                                 [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadStaticAttribute                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TimeoutException                                   [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TimeSpan                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TimeZoneInfo                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple                                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`1                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`2                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`3                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`4                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`5                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`6                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`7                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Tuple`8                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Type                                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeAccessException                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypedReference                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeInitializationException                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLoadException                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UInt16                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UInt32                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UInt64                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UIntPtr                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnauthorizedAccessException                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ValueType                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Version                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Void                                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   WeakReference                                      [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   WeakReference`1                                    [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Collections
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BitArray                                           [System.Collections]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ICollection                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IComparer                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumerable                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumerator                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEqualityComparer                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IList                                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IStructuralComparable                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IStructuralEquatable                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StructuralComparisons                              [System.Collections]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Collections.Concurrent
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConcurrentDictionary`2                             [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConcurrentQueue`1                                  [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConcurrentStack`1                                  [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EnumerablePartitionerOptions                       [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IProducerConsumerCollection`1                      [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OrderablePartitioner`1                             [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Partitioner                                        [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Partitioner`1                                      [System.Collections.Concurrent]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Collections.Generic
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Comparer`1                                         [System.Collections]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Dictionary`2                                       [System.Collections]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EqualityComparer`1                                 [System.Collections]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ICollection`1                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IComparer`1                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IDictionary`2                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumerable`1                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumerator`1                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEqualityComparer`1                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IList`1                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IReadOnlyDictionary`2                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IReadOnlyList`1                                    [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   KeyNotFoundException                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   KeyValuePair`2                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   List`1                                             [System.Collections]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Collections.ObjectModel
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Collection`1                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   KeyedCollection`2                                  [System.Collections.ObjectModel]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ReadOnlyCollection`1                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ReadOnlyDictionary`2                               [System.Collections.ObjectModel]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Diagnostics
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConditionalAttribute                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggableAttribute                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Debugger                                           [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggerBrowsableAttribute                         [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggerBrowsableState                             [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggerDisplayAttribute                           [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggerHiddenAttribute                            [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggerNonUserCodeAttribute                       [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggerStepThroughAttribute                       [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DebuggerTypeProxyAttribute                         [System.Diagnostics.Debug]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Diagnostics.CodeAnalysis
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SuppressMessageAttribute                           [System.Diagnostics.Tools]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Diagnostics.Contracts
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Contract                                           [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractAbbreviatorAttribute                       [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractArgumentValidatorAttribute                 [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractClassAttribute                             [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractClassForAttribute                          [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractFailedEventArgs                            [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractFailureKind                                [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractInvariantMethodAttribute                   [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractOptionAttribute                            [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractPublicPropertyNameAttribute                [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractReferenceAssemblyAttribute                 [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractRuntimeIgnoredAttribute                    [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractVerificationAttribute                      [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   PureAttribute                                      [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Diagnostics.Tracing
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventAttribute                                     [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventCommand                                       [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventCommandEventArgs                              [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventKeywords                                      [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventLevel                                         [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventListener                                      [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventOpcode                                        [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventSource                                        [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventSourceAttribute                               [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventTask                                          [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventWrittenEventArgs                              [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NonEventAttribute                                  [System.Diagnostics.Tracing]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Globalization
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Calendar                                           [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CalendarWeekRule                                   [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CharUnicodeInfo                                    [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CompareInfo                                        [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CompareOptions                                     [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CultureInfo                                        [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CultureNotFoundException                           [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DateTimeFormatInfo                                 [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DateTimeStyles                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NumberFormatInfo                                   [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NumberStyles                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RegionInfo                                         [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StringInfo                                         [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TextElementEnumerator                              [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TextInfo                                           [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TimeSpanStyles                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnicodeCategory                                    [System.Globalization]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.IO
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BinaryReader                                       [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BinaryWriter                                       [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EndOfStreamException                               [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FileNotFoundException                              [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IOException                                        [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MemoryStream                                       [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SeekOrigin                                         [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Stream                                             [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StreamReader                                       [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StreamWriter                                       [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StringReader                                       [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StringWriter                                       [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TextReader                                         [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TextWriter                                         [System.IO]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Reflection
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AmbiguousMatchException                            [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Assembly                                           [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyCompanyAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyConfigurationAttribute                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyContentType                                [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyCopyrightAttribute                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyCultureAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyDefaultAliasAttribute                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyDelaySignAttribute                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyDescriptionAttribute                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyFileVersionAttribute                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyFlagsAttribute                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyInformationalVersionAttribute              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyKeyFileAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyKeyNameAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyName                                       [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyNameFlags                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyProductAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblySignatureKeyAttribute                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyTitleAttribute                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyTrademarkAttribute                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyVersionAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CallingConventions                                 [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConstructorInfo                                    [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CustomAttributeExtensions                          [System.Reflection.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DefaultMemberAttribute                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventInfo                                          [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FieldInfo                                          [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GenericParameterAttributes                         [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IntrospectionExtensions                            [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IReflectableType                                   [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ManifestResourceInfo                               [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MemberInfo                                         [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MethodBase                                         [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MethodInfo                                         [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Missing                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ParameterInfo                                      [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   PropertyInfo                                       [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ReflectionContext                                  [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ResourceLocation                                   [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TargetInvocationException                          [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TargetParameterCountException                      [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeInfo                                           [System.Reflection]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Resources
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MissingManifestResourceException                   [System.Resources.ResourceManager]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NeutralResourcesLanguageAttribute                  [System.Resources.ResourceManager]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ResourceManager                                    [System.Resources.ResourceManager]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SatelliteContractVersionAttribute                  [System.Resources.ResourceManager]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GCLatencyMode                                      [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GCSettings                                         [System.Runtime.Extensions]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime.CompilerServices
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AccessedThroughPropertyAttribute                   [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AsyncTaskMethodBuilder                             [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AsyncTaskMethodBuilder`1                           [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AsyncVoidMethodBuilder                             [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CompilerGeneratedAttribute                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CompilerMarshalOverride                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConditionalWeakTable`2                             [System.Dynamic.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConfiguredTaskAwaitable                            [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ConfiguredTaskAwaitable`1                          [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ContractHelper                                     [System.Diagnostics.Contracts]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CustomConstantAttribute                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DateTimeConstantAttribute                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DecimalConstantAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ExtensionAttribute                                 [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FixedBufferAttribute                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IndexerNameAttribute                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InternalsVisibleToAttribute                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsBoxed                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsByValue                                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsConst                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsExplicitlyDereferenced                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsImplicitlyDereferenced                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsLong                                             [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsSignUnspecifiedByte                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsUdtReturn                                        [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IsVolatile                                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MethodImplAttribute                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MethodImplOptions                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NativeCppClassAttribute                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ReferenceAssemblyAttribute                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RuntimeCompatibilityAttribute                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RuntimeHelpers                                     [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskAwaiter                                        [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskAwaiter`1                                      [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeForwardedFromAttribute                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeForwardedToAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   YieldAwaitable                                     [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime.ExceptionServices
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ExceptionDispatchInfo                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime.InteropServices
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AllowReversePInvokeCallsAttribute                  [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ArrayWithOffset                                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AssemblyRegistrationFlags                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AutomationProxyAttribute                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BestFitMappingAttribute                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BStrWrapper                                        [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CallingConvention                                  [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CharSet                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ClassInterfaceAttribute                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ClassInterfaceType                                 [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CoClassAttribute                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComAliasNameAttribute                              [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComCompatibleVersionAttribute                      [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComConversionLossAttribute                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComDefaultInterfaceAttribute                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComEventInterfaceAttribute                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComEventsHelper                                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   COMException                                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComImportAttribute                                 [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComInterfaceType                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComMemberType                                      [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComRegisterFunctionAttribute                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComSourceInterfacesAttribute                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComUnregisterFunctionAttribute                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ComVisibleAttribute                                [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CriticalHandle                                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CurrencyWrapper                                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CustomQueryInterfaceMode                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CustomQueryInterfaceResult                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DefaultCharSetAttribute                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DispatchWrapper                                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DispIdAttribute                                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DllImportAttribute                                 [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ErrorWrapper                                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ExporterEventKind                                  [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ExtensibleClassFactory                             [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ExternalException                                  [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FieldOffsetAttribute                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GCHandle                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GCHandleType                                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   GuidAttribute                                      [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   HandleRef                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ICustomAdapter                                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ICustomMarshaler                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ICustomQueryInterface                              [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ImportedFromTypeLibAttribute                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ImporterEventKind                                  [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InAttribute                                        [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InterfaceTypeAttribute                             [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InvalidComObjectException                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InvalidOleVariantTypeException                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IRegistrationServices                              [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeLibExporterNameProvider                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeLibExporterNotifySink                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeLibImporterNotifySink                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   LayoutKind                                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   LCIDConversionAttribute                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ManagedToNativeComInteropStubAttribute             [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Marshal                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MarshalAsAttribute                                 [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   MarshalDirectiveException                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ObjectCreationDelegate                             [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OptionalAttribute                                  [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OutAttribute                                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   PreserveSigAttribute                               [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   PrimaryInteropAssemblyAttribute                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ProgIdAttribute                                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RegistrationClassContext                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RegistrationConnectionType                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RegistrationServices                               [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RuntimeEnvironment                                 [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SafeArrayRankMismatchException                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SafeArrayTypeMismatchException                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SafeBuffer                                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SafeHandle                                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SEHException                                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StructLayoutAttribute                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeIdentifierAttribute                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibConverter                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibExporterFlags                               [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibFuncAttribute                               [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibFuncFlags                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibImportClassAttribute                        [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibImporterFlags                               [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibTypeAttribute                               [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibTypeFlags                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibVarAttribute                                [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibVarFlags                                    [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TypeLibVersionAttribute                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnknownWrapper                                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnmanagedFunctionPointerAttribute                  [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnmanagedType                                      [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   VarEnum                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   VariantWrapper                                     [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime.InteropServices.ComTypes
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BIND_OPTS                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   BINDPTR                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CALLCONV                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CONNECTDATA                                        [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DESCKIND                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DISPPARAMS                                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ELEMDESC                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EXCEPINFO                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FILETIME                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FUNCDESC                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FUNCFLAGS                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   FUNCKIND                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IBindCtx                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IConnectionPoint                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IConnectionPointContainer                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IDLDESC                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IDLFLAG                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumConnectionPoints                              [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumConnections                                   [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumMoniker                                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumString                                        [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IEnumVARIANT                                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IMoniker                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IMPLTYPEFLAGS                                      [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   INVOKEKIND                                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IPersistFile                                       [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IRunningObjectTable                                [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IStream                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeComp                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeInfo                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeInfo2                                         [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeLib                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ITypeLib2                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   LIBFLAGS                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   PARAMDESC                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   PARAMFLAG                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   STATSTG                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SYSKIND                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TYPEATTR                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TYPEDESC                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TYPEFLAGS                                          [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TYPEKIND                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TYPELIBATTR                                        [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   VARDESC                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   VARFLAGS                                           [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   VARKIND                                            [System.Runtime.InteropServices]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime.InteropServices.WindowsRuntime
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DefaultInterfaceAttribute                          [System.Runtime.InteropServices.WindowsRuntime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DisposableRuntimeClass                             [System.Runtime.InteropServices.WindowsRuntime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EnableCompositionAttribute                         [System.Runtime.InteropServices.WindowsRuntime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventRegistrationToken                             [System.Runtime.InteropServices.WindowsRuntime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventRegistrationTokenTable`1                      [System.Runtime.InteropServices.WindowsRuntime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   InterfaceImplementedInVersionAttribute             [System.Runtime.InteropServices.WindowsRuntime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   WindowsRuntimeMarshal                              [System.Runtime.InteropServices.WindowsRuntime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime.Serialization
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OnDeserializedAttribute                            [System.Serialization.DataContract]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OnDeserializingAttribute                           [System.Serialization.DataContract]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OnSerializedAttribute                              [System.Serialization.DataContract]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   OnSerializingAttribute                             [System.Serialization.DataContract]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SerializationException                             [System.Serialization.DataContract]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StreamingContext                                   [System.Serialization.DataContract]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Runtime.Versioning
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TargetFrameworkAttribute                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Security
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SecurityCriticalAttribute                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SecurityException                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SecuritySafeCriticalAttribute                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SecurityTransparentAttribute                       [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnverifiableCodeAttribute                          [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   VerificationException                              [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Security.Principal
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IIdentity                                          [System.Security.Principal]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IPrincipal                                         [System.Security.Principal]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Text
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Decoder                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   DecoderFallbackException                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Encoder                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EncoderFallbackException                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Encoding                                           [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NormalizationForm                                  [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   StringBuilder                                      [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnicodeEncoding                                    [System.Text.Encoding]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UTF8Encoding                                       [System.Text.Encoding]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Threading
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AbandonedMutexException                            [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ApartmentState                                     [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   AutoResetEvent                                     [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CancellationToken                                  [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CancellationTokenRegistration                      [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CancellationTokenSource                            [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   CountdownEvent                                     [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventResetMode                                     [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   EventWaitHandle                                    [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ExecutionContext                                   [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Interlocked                                        [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   IOCompletionCallback                               [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   LazyInitializer                                    [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   LazyThreadSafetyMode                               [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   LockRecursionException                             [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ManualResetEvent                                   [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ManualResetEventSlim                               [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Monitor                                            [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Mutex                                              [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   NativeOverlapped                                   [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Overlapped                                         [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ParameterizedThreadStart                           [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   RegisteredWaitHandle                               [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SemaphoreFullException                             [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SemaphoreSlim                                      [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SendOrPostCallback                                 [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SpinLock                                           [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SpinWait                                           [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SynchronizationContext                             [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   SynchronizationLockException                       [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Thread                                             [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadAbortException                               [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadInterruptedException                         [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadLocal`1                                      [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadPool                                         [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadPriority                                     [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadStart                                        [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadStartException                               [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadState                                        [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ThreadStateException                               [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Timeout                                            [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Timer                                              [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TimerCallback                                      [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Volatile                                           [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   WaitCallback                                       [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   WaitHandle                                         [System.Runtime]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   WaitHandleCannotBeOpenedException                  [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   WaitOrTimerCallback                                [System.Threading]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;System.Threading.Tasks
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Parallel                                           [System.Threading.Tasks.Parallel]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ParallelLoopResult                                 [System.Threading.Tasks.Parallel]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ParallelLoopState                                  [System.Threading.Tasks.Parallel]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   ParallelOptions                                    [System.Threading.Tasks.Parallel]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Task                                               [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   Task`1                                             [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskCanceledException                              [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskCompletionSource`1                             [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskContinuationOptions                            [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskCreationOptions                                [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskFactory                                        [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskFactory`1                                      [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskScheduler                                      [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskSchedulerException                             [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   TaskStatus                                         [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   UnobservedTaskExceptionEventArgs                   [System.Threading.Tasks]
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Here is the list the assemblies that make up the core types.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   System.Collections.dll&lt;br /&gt;   System.Colection.ObjectModel.dll&lt;br /&gt;   System.Collections.Concurrent.dll&lt;br /&gt;&lt;br /&gt;   System.Dynamic.Runtime.dll&lt;br /&gt;&lt;br /&gt;   System.Threading.dll&lt;br /&gt;   System.Threading.Tasks.dll&lt;br /&gt;   System.Threading.Tasks.Parallel.dll&lt;br /&gt;&lt;br /&gt;   System.Diagnostics.Debug.dll&lt;br /&gt;   System.Diagnostics.tools.dll&lt;br /&gt;   System.Diagnostics.Tracing.dll&lt;br /&gt;   System.Diagnostics.Contracts.dll&lt;br /&gt;&lt;br /&gt;   System.Globalization.dll&lt;br /&gt;   System.IO.dll&lt;br /&gt;   System.Reflection.dll&lt;br /&gt;   System.Reflection.Extensions.dll&lt;br /&gt;   System.Resources.ResourceManager.dll&lt;br /&gt;&lt;br /&gt;   System.Runtime.dll&lt;br /&gt;   System.Runtime.Extensions.dll&lt;br /&gt;   System.Runtime.InteropServices.dll&lt;br /&gt;   System.Runtime.InteropServices.WindowsRuntime.dll
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;   System.Serialization.DataContract.dll&lt;br /&gt;   System.Security.Principal.dll&lt;br /&gt;   System.Text.Encoding.dll&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=20243" width="1" height="1"&gt;</description></item><item><title>Using the Windows Runtime from a Non-Metro Application</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/09/20/using-the-windows-runtime-from-a-non-metro-application.aspx</link><pubDate>Tue, 20 Sep 2011 17:23:48 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:20238</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/20238.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=20238</wfw:commentRss><description>&lt;p&gt;I know a lot of people believe that the new Windows Runtime APIs included in Windows 8 can only be accessed from Metro style applications. A big part of the reason why people believe this is because the version of Visual Studio that ships with the Windows 8 Developer Preview only supports creating Metro style applications. However, I set out this morning to use Windows Runtime APIs from a non-Metro application. Here's what I did.
&lt;/p&gt;&lt;p&gt;First, in Notepad, I created the following C# source code in EnumDevices.cs:
&lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-family:Consolas;"&gt;using System;&lt;br /&gt;using System.Threading.Tasks;&lt;br /&gt;using Windows.Devices.Enumeration;&lt;br /&gt;using Windows.Foundation;&lt;br /&gt;&lt;br /&gt;class App {&lt;br /&gt;   static void Main() {&lt;br /&gt;      EnumDevices().Wait();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   private static async Task EnumDevices() {&lt;br /&gt;      // To call DeviceInformation.FindAllAsync:&lt;br /&gt;      //    Reference Windows.Devices.Enumeration.winmd when building&lt;br /&gt;      //    Add the "using Windows.Devices.Enumeration;" directive (as shown above)&lt;br /&gt;      foreach (DeviceInformation di in await DeviceInformation.FindAllAsync()) {&lt;br /&gt;         Console.WriteLine(di.Name);&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;Second, I created a Build.bat file which I run from the Developer Command Prompt to build this code (This should be 1 line but I wrap it here for read ability):
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:36pt;"&gt;&lt;span style="font-family:Consolas;"&gt;csc &lt;/span&gt;EnumDevices&lt;span style="font-family:Consolas;"&gt;.cs &lt;br /&gt;   /r:c:\Windows\System32\WinMetadata\Windows.Devices.Enumeration.winmd  &lt;br /&gt;   /r:c:\Windows\System32\WinMetadata\Windows.Foundation.winmd&lt;br /&gt;   /r:System.Runtime.WindowsRuntime.dll &lt;br /&gt;   /r:System.Threading.Tasks.dll &lt;br /&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;Then, at the command prompt, I just run the &lt;/span&gt;EnumDevices&lt;span style="font-family:Consolas;"&gt;.exe to see the output.
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;Let me also explain how the async stuff works:
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;The XxxAsync methods (like DeviceInformation.FindAllAsync above) is a Windows Runtime method (defined in Windows.Devices.Enumeration.winmd) that returns a DeviceInformationFindAllAsyncOperation object which implements the Windows Runtime's IAsyncOperation&amp;lt;TResult&amp;gt; interface where TResult is the Windows.Devices.Enumeration.DeviceInformationCollection type. This interface is defined in the Windows.Foundation.winmd file. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;Using the await keyword causes the compiler to look for a GetAwaiter method on this interface. Since IAsyncOperation&amp;lt;TResult&amp;gt; does not define a GetAwaiter method, the compiler wants to look for an extension method. In the System.Runtime.WindowsRuntime.dll assembly is the static System.WindowsRuntimeSystemExtensions class. This class defines several GetAwaiter extensions methods and the compiler emits code that invokes the GetAwaiter extension method that takes an IAsyncOperation&amp;lt;TResult&amp;gt; and returns a System.Runtime.CompilerServices.TaskAwaiter&amp;lt;TResult&amp;gt; object (defined in the System.Threading.Tasks.dll which is why this assembly is referenced). Since TResult is the Windows.Devices.Enumeration.DeviceInformationCollection type, the await operator ultimately returns this type which is then used by the foreach loop. Inside the loop, I just display the Name property for each DeviceInformation object.
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;Because you cannot mark an entry point method (like Main) as being async, I moved the code that calls await into its own EnumDevices method, marked this method as async, and make it return a Task. Then Main invokes this method and calls Wait on the returned Task so that the application doesn't terminate until EnumDevices has run all the way through to completion.&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=20238" width="1" height="1"&gt;</description></item><item><title>Links to resources involving Jeffrey Richter</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/06/08/links-to-resources-involving-jeffrey-richter.aspx</link><pubDate>Wed, 08 Jun 2011 21:34:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19936</guid><dc:creator>JeffreyR</dc:creator><slash:comments>0</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19936.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19936</wfw:commentRss><description>&lt;p&gt;Recently, I have been involved with some videos related to threading and Windows Azure which I’d like to share with you:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I was the guest on an episode of AppFabric.TV released today! In this episode, I explain how asynchronous programming allows you to build scalable services. Watch the video &lt;a href="http://channel9.msdn.com/Shows/AppFabric-tv/AppFabrictv-Threading-with-Jeff-Richter"&gt;here&lt;/a&gt;.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;I recently did a Windows Azure roadshow in New York, Boston, Atlanta, and Washington, DC. The New York event was recorded and the introduction of it is available &lt;a href="https://www106.livemeeting.com/cc/MSEventsBMO/view?cn=guest&amp;amp;id=1032484438&amp;amp;pw=9C5054A3"&gt;here&lt;/a&gt;.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Mads Torgersen of Microsoft’s Visual Studio team did a Channel 9 video discussing the new Async CTP and he mentions my involvement with it. The cideo is available &lt;a href="http://channel9.msdn.com/posts/Mads-Torgersen-Visual-Studio-Async-CTP-SP1-Refresh-Overview"&gt;here&lt;/a&gt;. Mads mentions me around 10 minutes into the video.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I hope you enjoy these,   &lt;br /&gt;-- Jeffrey Richter (&lt;a href="http://Wintellect.com/"&gt;http://Wintellect.com/&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19936" width="1" height="1"&gt;</description></item><item><title>My CLR via C#, 3rd Edition book is E-Book deal of the day on May 26, 2011</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/05/26/my-clr-via-c-3rd-edition-book-is-e-book-deal-of-the-day-on-may-26-2011.aspx</link><pubDate>Thu, 26 May 2011 02:25:35 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19913</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19913.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19913</wfw:commentRss><description>&lt;p&gt;Just $23.99. Save 50% w/code DDCV3 &lt;a title="http://oreil.ly/musvJw" href="http://oreil.ly/musvJw"&gt;http://oreil.ly/musvJw&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19913" width="1" height="1"&gt;</description></item><item><title>Wintellect Azure Contest for XBOX 360 Kinect Bundle</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/05/11/wintellect-azure-contest-for-xbox-360-kinect-bundle.aspx</link><pubDate>Wed, 11 May 2011 18:39:06 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19882</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19882.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19882</wfw:commentRss><description>&lt;p&gt;Wintellect is conducting a contest where you could win an XBOX 360 Kinect Bundle. THis contest requires minimal effort from you. To register, all you have to do is signup up for a free Windows Azure pass and deploy a service that is provided for you. You do not need to install anything on your computer to participate. For instructions and to see your chances of winning (updated in real-time), go to &lt;a href="http://WintellectAzureContest.cloudapp.net/"&gt;http://WintellectAzureContest.cloudapp.net/&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;As I write this blog post, only 1 person has registered so far so your odds of winning are VERY good!&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19882" width="1" height="1"&gt;</description></item><item><title>Microsoft and Wintellect Present - Azure Deep Dive with Jeffrey Richter</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/04/27/microsoft-and-wintellect-present-azure-deep-dive-with-jeffrey-richter.aspx</link><pubDate>Wed, 27 Apr 2011 12:41:50 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19829</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19829.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19829</wfw:commentRss><description>&lt;p&gt;I am doing a FREE full-day seminar on programming for Windows Azure in 4 cities in mid-May 2011. The New York event will be broadcast live over the internet. To register for an in-person event, please see &lt;a title="https://www.wintellect.com/Training/Webinar/Registration" href="https://www.wintellect.com/Training/Webinar/Registration"&gt;https://www.wintellect.com/Training/Webinar/Registration&lt;/a&gt;. To register for the live streaming event, please see &lt;a title="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032484438&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US" href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032484438&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032484438&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19829" width="1" height="1"&gt;</description></item><item><title>Windows Azure Deep Dive with Jeffrey Richter: Explore the Benefits of Windows Azure Data Storage and Compute Services</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/04/05/windows-azure-deep-dive-with-jeffrey-richter-explore-the-benefits-of-windows-azure-data-storage-and-compute-services.aspx</link><pubDate>Tue, 05 Apr 2011 03:09:41 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19743</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19743.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19743</wfw:commentRss><description>&lt;p&gt;Wintellect is working with Microsoft to offer a free 1-day Windows Azure event hosted by me. You can find more information at &lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032484438&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032484438&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19743" width="1" height="1"&gt;</description></item><item><title>Jeffrey Richter speaks about Windows Azure and Asynchronous Programming</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/04/02/jeffrey-richter-speaks-about-windows-azure-and-asynchronous-programming.aspx</link><pubDate>Sat, 02 Apr 2011 01:42:18 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19725</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19725.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19725</wfw:commentRss><description>&lt;p&gt;&lt;a title="http://blogs.msdn.com/b/devpara/archive/2011/04/01/jeffrey-richter-speaks-about-windows-azure-and-asynchronous-programming.aspx" href="http://blogs.msdn.com/b/devpara/archive/2011/04/01/jeffrey-richter-speaks-about-windows-azure-and-asynchronous-programming.aspx"&gt;http://blogs.msdn.com/b/devpara/archive/2011/04/01/jeffrey-richter-speaks-about-windows-azure-and-asynchronous-programming.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19725" width="1" height="1"&gt;</description></item><item><title>Weak Event Handlers</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/03/17/weak-event-handlers.aspx</link><pubDate>Thu, 17 Mar 2011 11:21:53 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19662</guid><dc:creator>JeffreyR</dc:creator><slash:comments>3</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19662.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19662</wfw:commentRss><description>&lt;p&gt;In a few editions of my book, I showed how to implement weak event handlers which allow an object to be GCd if no other reference is keeping the object alive. If the object is alive, it recieves the event notification and if it isn’t alive, it doesn’t receive the event notification. It has come to my attention that the code I show in my book is incorrect and does not work as advertised. I have corrected that code and the working version is shown below:&lt;/p&gt;  &lt;p&gt;public static class WeakEventHandler {   &lt;br /&gt;&amp;#160;&amp;#160; private class WeakEventHandlerImpl {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; protected readonly WeakReference m_wrTarget; // WeakReference to original delegate's target object    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; protected Delegate m_openEventHandler;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // &amp;quot;Open&amp;quot; delegate to invoke original target's delegate method    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public WeakEventHandlerImpl(Delegate d) { m_wrTarget = new WeakReference(d.Target); }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Match is used to compare a WeakEventHandlerImpl object with an actual delegate.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Typically used to remove a WeakEventHandlerImpl from an event collection.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Boolean Match(Delegate strongEventHandler) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Returns true if original target &amp;amp; method match the WeakEventHandlerImpl's Target &amp;amp; method    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return (m_wrTarget.Target == strongEventHandler.Target) &amp;amp;&amp;amp; (m_openEventHandler.Method == strongEventHandler.Method);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160; }    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160; // &amp;quot;Open&amp;quot; delegate definition to quickly invoke original delegate's callback    &lt;br /&gt;&amp;#160;&amp;#160; private delegate void OpenEventHandler&amp;lt;TTarget, TEventArgs&amp;gt;(TTarget target, Object sender, TEventArgs eventArgs)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where TTarget : class    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where TEventArgs : EventArgs;    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160; // A proxy object that knows how to invoke a callback on an object if it hasn't been GC'd    &lt;br /&gt;&amp;#160;&amp;#160; private sealed class WeakEventHandlerImpl&amp;lt;TEventHandler&amp;gt; : WeakEventHandlerImpl where TEventHandler : class {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Refers to a method that removes a delegate to this proxy object once we know the original target has been GC'd    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private readonly Action&amp;lt;TEventHandler&amp;gt; m_cleanup;    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // This is the delegate passed to m_cleanup that needs to be removed from an event    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private readonly TEventHandler m_proxyHandler;    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static TEventHandler Create(TEventHandler eh, Action&amp;lt;TEventHandler&amp;gt; cleanup) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Contract.Requires(eh != null &amp;amp;&amp;amp; cleanup != null);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // We don't create weak events for static methods since types don't get GC'd    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Delegate d = (Delegate)(Object)eh;&amp;#160; // We know that all event handlers are derived from Delegate    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (d.Target == null) return eh;    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var weh = new WeakEventHandlerImpl&amp;lt;TEventHandler&amp;gt;(d, cleanup);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return weh.m_proxyHandler; // Return the delegate to add to the event    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private WeakEventHandlerImpl(Delegate d, Action&amp;lt;TEventHandler&amp;gt; cleanup) : base(d) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_cleanup = cleanup;    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type targetType = d.Target.GetType();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type eventHandlerType = typeof(TEventHandler);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type eventArgsType = eventHandlerType.IsGenericType    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ? eventHandlerType.GetGenericArguments()[0]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : eventHandlerType.GetMethod(&amp;quot;Invoke&amp;quot;).GetParameters()[1].ParameterType;    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Create a delegate to the ProxyInvoke method; this delegate is registered with the event    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var miProxy = typeof(WeakEventHandlerImpl&amp;lt;TEventHandler&amp;gt;)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .GetMethod(&amp;quot;ProxyInvoke&amp;quot;, BindingFlags.Instance | BindingFlags.NonPublic)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .MakeGenericMethod(targetType, eventArgsType);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_proxyHandler = (TEventHandler)(Object)Delegate.CreateDelegate(eventHandlerType, this, miProxy);    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Create an &amp;quot;open&amp;quot; delegate to the original delegate's method; ProxyInvoke calls this    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type openEventHandlerType = typeof(OpenEventHandler&amp;lt;,&amp;gt;).MakeGenericType(d.Target.GetType(), eventArgsType);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_openEventHandler = Delegate.CreateDelegate(openEventHandlerType, null, d.Method);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void ProxyInvoke&amp;lt;TTarget, TEventArgs&amp;gt;(Object sender, TEventArgs e)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where TTarget : class    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where TEventArgs : EventArgs {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // If the original target object still exists, call it; else call m_cleanup to unregister our delegate with the event    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TTarget target = (TTarget)m_wrTarget.Target;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (target != null)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ((OpenEventHandler&amp;lt;TTarget, TEventArgs&amp;gt;)m_openEventHandler)(target, sender, e);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else m_cleanup(m_proxyHandler);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160; }    &lt;br /&gt;     &lt;br /&gt;&amp;#160;&amp;#160; // We offer this overload because it is so common    &lt;br /&gt;&amp;#160;&amp;#160; public static EventHandler Wrap(EventHandler eh, Action&amp;lt;EventHandler&amp;gt; cleanup) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return WeakEventHandlerImpl&amp;lt;EventHandler&amp;gt;.Create(eh, cleanup);    &lt;br /&gt;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160; public static TEventHandler Wrap&amp;lt;TEventHandler&amp;gt;(TEventHandler eh, Action&amp;lt;TEventHandler&amp;gt; cleanup) where TEventHandler : class {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return WeakEventHandlerImpl&amp;lt;TEventHandler&amp;gt;.Create(eh, cleanup);    &lt;br /&gt;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160; public static EventHandler&amp;lt;TEventArgs&amp;gt; Wrap&amp;lt;TEventArgs&amp;gt;(EventHandler&amp;lt;TEventArgs&amp;gt; eh, Action&amp;lt;EventHandler&amp;lt;TEventArgs&amp;gt;&amp;gt; cleanup) where TEventArgs : EventArgs {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return WeakEventHandlerImpl&amp;lt;EventHandler&amp;lt;TEventArgs&amp;gt;&amp;gt;.Create(eh, cleanup);    &lt;br /&gt;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160; public static Boolean Match(Delegate weakEventHandler, Delegate strongEventHandler) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return ((WeakEventHandlerImpl) weakEventHandler.Target).Match(strongEventHandler);    &lt;br /&gt;&amp;#160;&amp;#160; }    &lt;br /&gt;}    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;To use it, instead of registerring an event callback like this:   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; someButton.Click += o.ClickHandler;&lt;/p&gt;  &lt;p&gt;Do this:   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; someButton.Click += WeakEventHandler.Wrap(o.ClickHandler, eh =&amp;gt; someButton.Click -= eh);    &lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19662" width="1" height="1"&gt;</description></item><item><title>Jeffrey Richter, Wintellect, and Windows Azure</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2011/02/17/jeffrey-richter-wintellect-and-windows-azure.aspx</link><pubDate>Thu, 17 Feb 2011 23:17:03 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:19513</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/19513.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=19513</wfw:commentRss><description>&lt;p&gt;I love computing technologies. I've been programming since 1975 and experimenting with various languages (Basic, Pascal, COBOL, FORTRAN, RPG, APL, C, C++, C#, a little Python) and platforms (mostly DOS, Windows, .NET Framework and Android). During these years, I've consulted, published books, published magazine articles, and produced classes to help others work with these some of the more popular of these technologies. To this day, I've kept up with many of these technologies and I will certainly continue to do so. For example, I expect that I will update my CLR via C# book to cover the next version of the CLR and C# (release date unknown). 
&lt;/p&gt;&lt;p&gt;However, my nature is such that I'm always looking for the next thing to embrace. After much deliberation, I decided to focus on Windows Azure. And, as such, I along with Paul Mehner (another Wintellectual who has been working with Azure even longer than I) have been working together with it almost daily since August 2010. In addition, I've had numerous meetings and e-mail exchanges with Microsoft Azure team members. And now, I'm finally ready to make some announcements:
&lt;/p&gt;&lt;ul style="margin-left:54pt;"&gt;&lt;li&gt;&lt;div&gt;&lt;a href="http://Wintellect.com"&gt;Wintellect&lt;/a&gt; now offers a rich 2-day Windows Azure class taught by Paul &amp;amp; myself. We have built a class that we are very proud of. It is packed full of deep information and practical demos &amp;amp; sample code. We have compared our content to many others and truly believe that our class offers much deeper, useful, and practical information than the competition. You can find the syllabus for the class &lt;a href="http://www.wintellect.com/Training/Courses/Windows-Azure-Services"&gt;here&lt;/a&gt;. A much more detailed class syllabus can be obtained by contacting one of Wintellect's sales people via phone (877-968-5528) or this &lt;a href="http://www.wintellect.com/Contact-Us"&gt;web page&lt;/a&gt;. As always, we are always happy to customize our course content for our customers.
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Wintellect is offering its &lt;a href="http://www.wintellect.com/devscovery/"&gt;Devscovery conference&lt;/a&gt; three times in 2011 and at all these events I will be leading a "Day of Windows Azure" class and Paul will also be leading some Azure sessions as well. 
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;I also will be posting a bunch of Windows-Azure focused blog posts (available &lt;a href="http://www.wintellect.com/Resources/Blogs"&gt;here&lt;/a&gt;) &amp;amp; on-line articles where I'll share tips and techniques with you to hopefully simplify your effort own efforts when working with Azure In addition, I will be hosting a complimentary webinar on March 11th from 12 p.m. – 1 p.m. ET covering &lt;strong&gt;&lt;em&gt;Azure Blob Storage&lt;/em&gt;&lt;/strong&gt;. I will be discussing the many features offered by Windows Azure Blob Storage including: accounts, containers, blobs, and blocks/pages, using the storage client library to access blobs, how to conditionally access blobs, blob snapshots, leases, and shared access signatures. You can register for this event &lt;a href="https://www.wintellect.com/Training/Webinar/Registration"&gt;here&lt;/a&gt;.
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;We have also produced a useful class library of helper code for people working with Azure. We call it Wintellect's Power Azure Library. It needs some more testing and documentation but when it is ready, we'll make it freely available from the &lt;a href="http://www.wintellect.com/Resources/Downloads"&gt;Wintellect Resource Downloads page&lt;/a&gt;.
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Paul and I have also built an Azure diagnostic transfer tool (better name to be created) that can be scripted or run interactively. This tool can force a transfer of Azure diagnostic information from your running instances to Azure storage. Then, the tool can download from storage the Azure diagnostic data creating CSV files which can be loaded into Excel (or other tool) and easily processed including the ability to create charts and graphs. In addition, the tool converts the performance monitor data into a file which can be read by the Windows Performance Monitor tool allowing you to graphically see the values of role instance performance counters over time. This tool will be offered for free and, when available, it can also be downloaded from the &lt;a href="http://www.wintellect.com/Resources/Downloads"&gt;Wintellect Resource Downloads page&lt;/a&gt;. 
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;For many, many years, I have been adding little features to my PushPin utility (also freely available from the &lt;a href="http://www.wintellect.com/Resources/Downloads"&gt;Wintellect Resource Downloads page&lt;/a&gt;). I use this utility throughout every day of my life. It allows me to pin any window on top of other windows, change the opacity of windows, dial phone numbers, rotate the display, touch file timestamps, download files from the web, determine which app(s) have a file in use, navigate to registry keys in RegEdit.exe, and more. The new version of PushPin now periodically checks your Azure subscription and informs you if you have any deployed services running in the cloud allowing you to delete the deployments in order to avoid racking up charges. This utility is great for presenters, experimenters, or testers who deploy services to Azure and do not want to leave the deployment running indefinitely. 
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;At Wintellect, we offer consulting services on many various technologies and, for some time now, we have been helping various companies migrate their existing applications to Windows Azure. The results of this real-world experience can be seen in everything we do: courses, conference sessions, blog posts, articles, class libraries, and tools. 
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And, before anyone asks: At this time, I do not plan on writing a book about Windows Azure development due to the time commitment involved in producing a brand new book. But, hopefully, I can get relevant information out to you sooner (and more cheaply) via all the avenues mentioned above. Also stay-tuned as I will be announcing the release of our new online (premium) content, you must sign up with Wintellect (please note that signing up is free). I will release more details in the coming weeks, so stay tuned. &lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=19513" width="1" height="1"&gt;</description></item><item><title>Logical Call Context: Flowing Data across Threads, AppDomains, and Processes</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2010/09/27/logical-call-context-flowing-data-across-threads-appdomains-and-processes.aspx</link><pubDate>Mon, 27 Sep 2010 21:52:11 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:18769</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/18769.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=18769</wfw:commentRss><description>&lt;p&gt;Many developers are familiar with Thread Local Storage (TLS) as a mechanism allowing you to associate a piece of data with a thread. I usually discourage people from using TLS because I recommend architecting applications to perform their operations using thread pool threads. TLS doesn't work with the thread pool because different thread pool threads all take part in a since workflow or operation sequence. However, sometimes people would like to associate some data with a workflow that multiple threads participate in. The .NET Framework has a little-known facility that allows you to associate data with a "logical" thread-of-execution. This facility is called &lt;em&gt;logical&lt;/em&gt;
		&lt;em&gt;call context&lt;/em&gt; and it allows data to flow to other threads, AppDomains, and even to threads in other processes.
&lt;/p&gt;&lt;p&gt;While the logical call context facility was originally created for use by the .NET Framework's remoting infrastructure it can certainly be used without using remoting. Here's how it works, every managed thread has a hashtable object associated with it. For this hastable, the keys are String objects and the values are can refer to any object whose type is marked with the [Serializable] custom attribute. The content of this hashtable is automatically serialized/deserialized when a logical thread of execution crosses a physical thread, appdomain, or process boundary.
&lt;/p&gt;&lt;p&gt;To manipulate a thread's logical call context hashtable, you call the static LogicalSetData and LogicalGetData methods defined on the CallContext class (defined in the System.Runtime.Remoting.Messaging namespace). You delete a key from the hashtable by calling FreeNamedDataSlot. The class looks like this:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;[Serializable]&lt;br /&gt;public sealed class CallContext : ISerializable {&lt;br /&gt;   public static void   LogicalSetData(String name, Object data);&lt;br /&gt;   public static Object LogicalGetData(String name);&lt;br /&gt;   public static void   FreeNamedDataSlot(String name);&lt;br /&gt;&lt;br /&gt;   // For remoting only&lt;br /&gt;   public static void SetHeaders(Header[] headers);&lt;br /&gt;   public static Header[] GetHeaders();&lt;br /&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Here is a small sample application that demonstrates the call context mechanism:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;public static class Program {&lt;br /&gt;   &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; c_CCDataName = &lt;span style="color:#a31515;"&gt;"CCData"&lt;/span&gt;;&lt;br /&gt;
			&lt;br /&gt;   &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Main() {&lt;br /&gt;      &lt;span style="color:green;"&gt;// Set an item in the thread's call context&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#2b91af;"&gt;CallContext&lt;/span&gt;.LogicalSetData(c_CCDataName, &lt;span style="color:#a31515;"&gt;"Data="&lt;/span&gt; + &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now);&lt;br /&gt;
			&lt;br /&gt;      &lt;span style="color:green;"&gt;// Get the item in the thread's call context&lt;/span&gt;&lt;br /&gt;      GetCallContext();&lt;br /&gt;
			&lt;br /&gt;      &lt;span style="color:green;"&gt;// Show that call context flows to another thread&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#2b91af;"&gt;WaitCallback&lt;/span&gt; wc = na =&amp;gt; GetCallContext();&lt;br /&gt;      wc.EndInvoke(wc.BeginInvoke(&lt;span style="color:blue;"&gt;null&lt;/span&gt;, &lt;span style="color:blue;"&gt;null&lt;/span&gt;, &lt;span style="color:blue;"&gt;null&lt;/span&gt;));&lt;br /&gt;
			&lt;br /&gt;      &lt;span style="color:green;"&gt;// Show that call context flows to another AppDomain&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt; ad = &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CreateDomain(&lt;span style="color:#a31515;"&gt;"Other AppDomain"&lt;/span&gt;);&lt;br /&gt;      ad.DoCallBack(GetCallContext);&lt;br /&gt;      &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.Unload(ad);&lt;br /&gt;
			&lt;br /&gt;
			&lt;span style="color:green;"&gt;// Remove the key to prevent (de)serialization of its value&lt;br /&gt;      // from this point on improving performance&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#2b91af;"&gt;CallContext&lt;/span&gt;.FreeNamedDataSlot(c_CCDataName);&lt;br /&gt;
			&lt;br /&gt;      &lt;span style="color:green;"&gt;// Show no data due to the key being removed from the hashtable&lt;/span&gt;&lt;br /&gt;      GetCallContext(); &lt;br /&gt;   }&lt;br /&gt;
			&lt;br /&gt;   &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; GetCallContext() {&lt;br /&gt;      &lt;span style="color:green;"&gt;// Get the item in the thread's call context&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"AppDomain={0}, Thread ID={1}, Data={2}"&lt;/span&gt;,&lt;br /&gt;         &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CurrentDomain.FriendlyName,&lt;br /&gt;         &lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;.CurrentThread.ManagedThreadId,&lt;br /&gt;         &lt;span style="color:#2b91af;"&gt;CallContext&lt;/span&gt;.LogicalGetData(c_CCDataName));&lt;br /&gt;   }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;When I compile and run this code, I get the following output:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;AppDomain=04a-Contexts.exe, Thread ID=1, Data=Data=9/27/2010 2:47:55 PM&lt;br /&gt;AppDomain=04a-Contexts.exe, Thread ID=3, Data=Data=9/27/2010 2:47:55 PM&lt;br /&gt;AppDomain=Other AppDomain, Thread ID=1, Data=Data=9/27/2010 2:47:55 PM&lt;br /&gt;AppDomain=04a-Contexts.exe, Thread ID=1, Data=
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Since the logical call context mechanism serializes and deserializes objects in a hashtable, it is a pretty expensive mechanism. That is, it takes time to serialize &amp;amp; deserialize objects and, of course, deserializing objects creates objects in the managed heap which must ultimately be garbage collected. So, in my own applications, I try to avoid the call context mechanism just like I try to avoid TLS. However, there are occasions where call context can fill a need and save the day.&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=18769" width="1" height="1"&gt;</description></item><item><title>Integrating your Application’s Threading Model with the Asynchronous Programming Model</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2010/09/22/integrating-your-application-s-threading-model-with-the-asynchronous-programming-model.aspx</link><pubDate>Wed, 22 Sep 2010 13:44:08 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:18683</guid><dc:creator>JeffreyR</dc:creator><slash:comments>1</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/18683.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=18683</wfw:commentRss><description>&lt;p&gt;In version 2.0 of the .NET Framework, Microsoft introduced the System.Threading. SynchronizationContext class. Simply stated, a SynchronizationContext-derived object connects an application model to its threading model. The FCL defines several classes derived from SynchronizationContext, but usually you will not deal directly with these classes; in fact, many of them are not publicly exposed or documented. Here is what the SynchronizationContext class looks like (I show only the members relevant to this discussion):
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;public class SynchronizationContext {&lt;br /&gt;   // Gets the SynchronizationContext-derived object &lt;br /&gt;   // associated with the calling thread&lt;br /&gt;   public static SynchronizationContext Current { get; }&lt;br /&gt;&lt;br /&gt;   // Invokes d asynchronously&lt;br /&gt;   public virtual void Post(SendOrPostCallback d, object state); &lt;br /&gt;&lt;br /&gt;   // Invokes d synchronously&lt;br /&gt;   public virtual void Send(SendOrPostCallback d, object state);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// SendOrPostCallback is a delegate defined like this:&lt;br /&gt;public delegate void SendOrPostCallback(Object state);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Console and NT service applications have no threading model and therefore calling SynchronizationContext.Current will return null. For GUI applications such as Windows Forms, Windows Presentation Foundation, and Silverlight, the threading model dictates that all UI components must be updated by the thread that created them. So, when a GUI thread calls SynchronizationContext.Current, a reference to an object that knows how to invoke the d delegate on the calling GUI thread is returned. For ASP.NET applications, calling SynchronizationContext.Current returns a reference to an object that knows how to associates the original client request's identity and culture with the calling thread before invoke the d delegate (which will be invoked on the same thread that calls SynchronizationContext's Post or Send methods. In fact, for an ASP.NET SynchronizationContext object, the Post and Send methods do the exact same thing: they call the d delegate synchronously.
&lt;/p&gt;&lt;p&gt;When working with the .NET Framework's Asynchronous Programming Model (APM), understanding the SynchronizationContext is extremely important as it allows the callback method to be invoked using your application's thread model. To simplify this, I wrote the following little method:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:10pt;"&gt;private static AsyncCallback SyncContextCallback(AsyncCallback callback) {&lt;br /&gt;   // Capture the calling thread's SynchronizationContext-derived object&lt;br /&gt;   SynchronizationContext sc = SynchronizationContext.Current;&lt;br /&gt;&lt;br /&gt;   // If there is no SC, just return what was passed in&lt;br /&gt;   if (sc == null) return callback;&lt;br /&gt;&lt;br /&gt;   // Return a delegate that, when invoked, posts to the captured SC a method that&lt;br /&gt;   // calls the original AsyncCallback passing it the IAsyncResult argument&lt;br /&gt;   return asyncResult =&amp;gt; sc.Post(&lt;br /&gt;      result =&amp;gt; callback((IAsyncResult)result), asyncResult);&lt;br /&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;This method turns a normal AsyncCallback method into an AsyncCallback method that is invoked via the SynchronizationContext-derived object associated with the calling thread. &lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=18683" width="1" height="1"&gt;</description></item><item><title>Using AppDomains to make Non-Threadsafe code Threadsafe</title><link>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2010/09/01/using-appdomains-to-make-non-threadsafe-code-threadsafe.aspx</link><pubDate>Wed, 01 Sep 2010 20:39:41 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:18359</guid><dc:creator>JeffreyR</dc:creator><slash:comments>5</slash:comments><comments>http://www.wintellect.com/CS/blogs/jeffreyr/comments/18359.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jeffreyr/commentrss.aspx?PostID=18359</wfw:commentRss><description>&lt;p&gt;Recently, I was involved in a Wintellect consulting engagement where a customer had some class library code that was created years ago. The code in this class library was not designed to work well in a multithreaded environment. Specifically, this means that if two or more threads called into the class library code at the same time, the data got corrupted and the results could not be trusted. Non-concurrent-ready code is easy to obtain with frequent use of mutable static fields. But, there are other common coding practices which can result in code that is not safe with multiple threads passing through it at the same time. 
&lt;/p&gt;&lt;p&gt;This customer wanted to increase the performance of their code and the best way to accomplish this is to have multiple threads processing their own data independently of each other. But, again, the class library code base would produce errant results if we did this. To demonstrate the problem, imagine this very simple static class which is indicative of the non-thread safe class library that I'm referring to:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt;
			&lt;span style="color:blue;"&gt;static&lt;/span&gt;
			&lt;span style="color:blue;"&gt;class&lt;/span&gt;
			&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithm&lt;/span&gt; {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;
			&lt;span style="color:blue;"&gt;private&lt;/span&gt;
			&lt;span style="color:blue;"&gt;static&lt;/span&gt;
			&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;&amp;gt; s_items = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;&amp;gt;();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;
			&lt;span style="color:blue;"&gt;public&lt;/span&gt;
			&lt;span style="color:blue;"&gt;static&lt;/span&gt;
			&lt;span style="color:blue;"&gt;void&lt;/span&gt; Add(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; item) { s_items.Add(item); }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;
			&lt;span style="color:blue;"&gt;public&lt;/span&gt;
			&lt;span style="color:blue;"&gt;static&lt;/span&gt;
			&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;[] GetItems() { &lt;span style="color:blue;"&gt;return&lt;/span&gt; s_items.ToArray();  }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas;font-size:9pt;"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;If we have two threads using this class simultaneously, the results are unpredictable. For example, let's say we have this code:
&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:#2b91af;"&gt;ThreadPool&lt;/span&gt;.QueueUserWorkItem(o =&amp;gt; &lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithm&lt;/span&gt;.Add(&lt;span style="color:#a31515;"&gt;"Item 1"&lt;/span&gt;), &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithm&lt;/span&gt;.Add(&lt;span style="color:#a31515;"&gt;"Item 2"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;.Sleep(1000);  &lt;span style="color:green;"&gt;// To demonstrate the problem consistently&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;var&lt;/span&gt; i &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithm&lt;/span&gt;.GetItems())&lt;br /&gt;   &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(i);
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;When this code runs, the console could show:
&lt;/p&gt;&lt;ul style="margin-left:54pt;"&gt;&lt;li&gt;"Item 2" by itself
&lt;/li&gt;&lt;li&gt;"Item 2" followed by "Item 1"
&lt;/li&gt;&lt;li&gt;"Item 1" followed by "Item 2"
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Clearly, this is not desireable and the problem all stems from the threads sharing the one List&amp;lt;String&amp;gt; object. In fact, the List&amp;lt;T&amp;gt; class is not itself thread-safe and so it is even possible that having multiple threads accessing it simultaneously could result in items disappearing or a single item being inserted multiple times, or worse. It depends on how the List&amp;lt;T&amp;gt; class is internally implemented which is not documented and is subject to change.
&lt;/p&gt;&lt;p&gt;Now, one way to improve performance for the customer would be for Wintellect to take the non-concurrent code base and make it thread safe. This is the best thing to do; however, the code base was very large, the changes to the code base would have been substantial and a lot of testing would have had to be done. The customer was not too excited by this recommendation. So, what we did instead was use the CLR's AppDomain feature.  This works out great because an AppDomain's state is completely isolated from all other AppDomains. To communicate across AppDomains, you must create a class derived from MarshalByRefObject. So, I created a NonConcurrentAlgorithmProxy class that wraps the methods of the static class. The NonConcurrentAlgorithmProxy class looks like this:
&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;sealed&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithmProxy&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;MarshalByRefObject&lt;/span&gt; {
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;   &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Add(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; item) { &lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithm&lt;/span&gt;.Add(item); }&lt;br /&gt;   &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;[] GetItems()   { &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithm&lt;/span&gt;.GetItems(); }&lt;br /&gt;}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Then we modified the code that uses this class library code so that each thread creates its own AppDomain and creates an instance of the NonConcurrentAlgorithmProxy class in each AppDomain. The static field in the NonConcurrentAlgorithm class is now one-per-AppDomain and since each thread gets its own AppDomain, there is now one List&amp;lt;String&amp;gt; object per thread. Here is the new code that uses the class library code via the proxy class:
&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:green;"&gt;// Create Thread 1's AppDomain &amp;amp; proxy&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; thread1AppDomain = &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CreateDomain(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Empty);&lt;br /&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; thread1Proxy = (&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithmProxy&lt;/span&gt;)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;   thread1AppDomain.CreateInstanceAndUnwrap(
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;      t&lt;span style="color:blue;"&gt;ypeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithmProxy&lt;/span&gt;).Assembly.FullName,
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;      &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithmProxy&lt;/span&gt;).FullName);&lt;br /&gt;
					&lt;br /&gt;&lt;span style="color:green;"&gt;// Create Thread 2's AppDomain &amp;amp; proxy&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; thread2AppDomain = &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CreateDomain(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Empty);&lt;br /&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; thread2Proxy = (&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithmProxy&lt;/span&gt;) 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;   thread2AppDomain.CreateInstanceAndUnwrap(
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;
					&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithmProxy&lt;/span&gt;).Assembly.FullName, 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Consolas;"&gt;
					&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;NonConcurrentAlgorithmProxy&lt;/span&gt;).FullName);&lt;br /&gt;
					&lt;br /&gt;&lt;span style="color:green;"&gt;// Have 2 threads execute the same code at the same time but in different AppDomains&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;ThreadPool&lt;/span&gt;.QueueUserWorkItem(o =&amp;gt; thread2Proxy.Add(&lt;span style="color:#a31515;"&gt;"Item 1"&lt;/span&gt;), &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;thread1Proxy.Add(&lt;span style="color:#a31515;"&gt;"Item 2"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;.Sleep(1000);  &lt;span style="color:green;"&gt;// To demonstrate the problem has been fixed&lt;/span&gt;&lt;br /&gt;
					&lt;br /&gt;&lt;span style="color:green;"&gt;// Show Thread 1's list of items; guaranteed to be "Item 2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;var&lt;/span&gt; i &lt;span style="color:blue;"&gt;in&lt;/span&gt; thread1Proxy.GetItems())&lt;br /&gt;   &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(i);&lt;br /&gt;
					&lt;br /&gt;&lt;span style="color:green;"&gt;// Show Thread 2's list of items; guaranteed to be "Item 1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;var&lt;/span&gt; i &lt;span style="color:blue;"&gt;in&lt;/span&gt; thread2Proxy.GetItems())&lt;br /&gt;   &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(i);&lt;br /&gt;
					&lt;br /&gt;&lt;span style="color:green;"&gt;// Cleanup each thread's AppDomain&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.Unload(thread1AppDomain);&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.Unload(thread2AppDomain);
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;This is substantially less coding, testing, and effort than what would have been involved with making the customer's current code base thread safe! And, this technique can scale very nicely for many threads as well. Of course, there is a slight performance penalty when creating/destroying  AppDomains and calling methods through the proxy. This is why it would be ideal to make the existing code base thread safe. But, this is a great compromise and the customer was quite happy with the results and the time/cost it required to improve their application's performance substantially.&lt;/p&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=18359" width="1" height="1"&gt;</description></item></channel></rss>
