<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Chris Garty's Weblog : Visual Studio 2005</title><link>http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx</link><description>Tags: Visual Studio 2005</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Fun with Generics: BindingList and ReadOnlyCollection</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/09/15/229834.aspx</link><pubDate>Thu, 16 Sep 2004 02:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:229834</guid><dc:creator>chrisgarty</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/229834.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=229834</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://notgartner.com/posts/618.aspx"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Mitch Denny's post about List events&lt;/span&gt;&lt;/a&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&amp;nbsp;and &lt;a href="http://msmvps.com/bill/archive/2004/09/07/13121.aspx"&gt;Bill McCarthy's subsequent answer pointing him to BindingList&lt;/a&gt;&amp;nbsp;had me looking at some &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/03/15/89860.aspx"&gt;Generics Design Guidelines&lt;/a&gt;&amp;nbsp;and there were&amp;nbsp;two generic collection types that I really glad I found out about.&lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Mitch's question ("why doesn't List&amp;lt;T&amp;gt; fire events") was similar to the one I was asking myself the other day. I was getting tired of providing Add and Remove methods on every object that managed a collection. For example, if I have an Order object and an OrderItem object, I can create Order.AddOrderItem, Order.RemoveOrderItem, but I'd really rather just expose a list of OrderItems from Order, validate each OrderItem as it is added, and allow the standard IList.Remove method to handle removals. It might not be something you'd want to do all the time, but it would mean less code and it could be a useful option to utilise in certain situations. &lt;a href="http://www.dotnet2themax.com/DotNetBrowser/ShowType.aspx?asm=System&amp;amp;ns=System.ComponentModel.Collections.Generic&amp;amp;type=BindingList%7bT%7d"&gt;BindingList&amp;lt;T&amp;gt;&lt;/a&gt; provides this useful 'list with events' capability.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;The other generic collection type I was interested by was &lt;a href="http://www.dotnet2themax.com/DotNetBrowser/ShowType.aspx?asm=System&amp;amp;ns=System.Collections.Generic&amp;amp;type=ReadOnlyCollection%7bT%7d"&gt;ReadOnlyCollection&amp;lt;T&amp;gt;&lt;/a&gt;. Have you ever used an IList (probably an ArrayList) internally to manage a list and provided a view of that by converting it to an array? Or maybe you've exposed an array externally? ReadOnlyCollection means that you have an option other than an array with the added benefit of being truly read-only i.e. it doesn't allow something like list[1] = 5;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Here are&amp;nbsp;some tests I used to learn about &lt;a href="http://www.dotnet2themax.com/DotNetBrowser/ShowType.aspx?asm=System&amp;amp;ns=System.ComponentModel.Collections.Generic&amp;amp;type=BindingList%7bT%7d"&gt;BindingList&amp;lt;T&amp;gt;&lt;/a&gt;and &lt;a href="http://www.dotnet2themax.com/DotNetBrowser/ShowType.aspx?asm=System&amp;amp;ns=System.Collections.Generic&amp;amp;type=ReadOnlyCollection%7bT%7d"&gt;ReadOnlyCollection&amp;lt;T&amp;gt;&lt;/a&gt; behaviour.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font size="1"&gt;BindingListTests.cs…&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; System.Collections;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; System.ComponentModel.Collections.Generic;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; NUnit.Framework;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;namespace&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; GenericsExamples&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="COLOR: teal"&gt;TestFixture&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;BindingListTests&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; _EventFired;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="COLOR: teal"&gt;Test&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; TestBindingListEvents()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Add to a bound list and fail if events are not triggered or triggered incorrectly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;BindingList&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt; bindingList = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;BindingList&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.Add(1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.ListChanged += &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventHandler&lt;/span&gt;(bindingList_ListChangedItemAdded);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_EventFired = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.Add(2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!_EventFired) &lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.Fail("BindingList event not triggered");&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.ListChanged -= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventHandler&lt;/span&gt;(bindingList_ListChangedItemAdded);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.ListChanged += &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventHandler&lt;/span&gt;(bindingList_ListChangedItemDeleted);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_EventFired = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.Remove(2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!_EventFired) &lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.Fail("BindingList event not triggered");&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.ListChanged -= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventHandler&lt;/span&gt;(bindingList_ListChangedItemDeleted);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.AreEqual(1, bindingList.Count);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.ListChanged += &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventHandler&lt;/span&gt;(bindingList_ListChangedItemAddedButRejected);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.Add(5);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bindingList.ListChanged -= &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventHandler&lt;/span&gt;(bindingList_ListChangedItemAddedButRejected);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.AreEqual(1, bindingList.Count);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;void&lt;/span&gt; bindingList_ListChangedItemAdded(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventArgs&lt;/span&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (e.ListChangedType != System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedType&lt;/span&gt;.ItemAdded)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.Fail("Expected ItemAdded event but got: " + e.ListChangedType.ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_EventFired = &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;void&lt;/span&gt; bindingList_ListChangedItemDeleted(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventArgs&lt;/span&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (e.ListChangedType != System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedType&lt;/span&gt;.ItemDeleted)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.Fail("Expected ItemDeleted event but got: " + e.ListChangedType.ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_EventFired = &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;void&lt;/span&gt; bindingList_ListChangedItemAddedButRejected(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedEventArgs&lt;/span&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (e.ListChangedType == System.ComponentModel.&lt;span style="COLOR: teal"&gt;ListChangedType&lt;/span&gt;.ItemAdded)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Do some validation and if it fails then I might need to remove the added item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;((&lt;span style="COLOR: teal"&gt;IList&lt;/span&gt;)sender).RemoveAt(e.NewIndex);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font size="1"&gt;ReadOnlyCollectionTests.cs…&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; System.Collections.Generic;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; NUnit.Framework;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;font size="1"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;namespace&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; GenericsExamples&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="COLOR: teal"&gt;TestFixture&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;ReadOnlyCollectionTests&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="COLOR: teal"&gt;Test&lt;/span&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; TestReadOnlyCollectionCreation()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt; list = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;list.Add(1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;list.Add(2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.Collections.Generic.&lt;span style="COLOR: teal"&gt;ReadOnlyCollection&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt; roList = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;ReadOnlyCollection&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt;(list);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//roList.Add(3);&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp; &lt;/span&gt;//Operation isn't available!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//roList[1] = 3;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp; &lt;/span&gt;//Operation isn't available!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="COLOR: green; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.AreEqual(2, list.Count);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: teal"&gt;Assert&lt;/span&gt;.AreEqual(2, roList.Count);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="mso-no-proof: yes"&gt;&lt;font face="Verdana"&gt;&lt;font size="1"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;I wonder if they'll improve BindingList&amp;lt;T&amp;gt; before RTM by getting ListChangedEventHandler to pull the generic type from the BindingList rather than simply providing a parameter of "object&amp;nbsp;sender"? We'll just have to wait and see.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;For more about handling different situations with Generics, have a read of the &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/03/15/89860.aspx"&gt;Generics Design Guidelines&lt;/a&gt; from &lt;a href="http://blogs.msdn.com/kcwalina/"&gt;Krzysztof Cwalina&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=229834" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Visual Studio 2005 Beta 1 Available</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/07/05/172963.aspx</link><pubDate>Mon, 05 Jul 2004 19:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:172963</guid><dc:creator>chrisgarty</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/172963.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=172963</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;After being announced last week, beta 1 of &lt;A href="http://lab.msdn.microsoft.com/vs2005/"&gt;Visual Studio 2005&lt;/A&gt; has just become available on &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/subscriptions/downloads/"&gt;&lt;FONT face=Verdana size=2&gt;MSDN Subscriber Downloads&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;If you have an MSDN Universal license, go get it now!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=172963" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/VS+Team+System/default.aspx">VS Team System</category></item><item><title>Presentation: Refactoring</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/06/30/169418.aspx</link><pubDate>Wed, 30 Jun 2004 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:169418</guid><dc:creator>chrisgarty</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/169418.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=169418</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Last week I gave a presentation at the &lt;A href="http://www.mdnug.org/"&gt;Melbourne&amp;nbsp;Microsoft&amp;nbsp;Developer Group&amp;nbsp;(MDNUG)&lt;/A&gt; on &lt;A href="http://www.refactoring.com/"&gt;Refactoring&lt;/A&gt; with code examples in C# (.Net) and using Visual Studio 2005 for some live demonstrations.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The slide deck for my Refactoring presentation is available &lt;A href="http://www.ip3systems.com/chrisgarty/presentations/2004/Refactoring.ppt"&gt;here&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=169418" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/My+Presentations/default.aspx">My Presentations</category></item><item><title>Presentation: Agile .Net Development - Part 1 - Tools and Basics</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/06/30/169381.aspx</link><pubDate>Wed, 30 Jun 2004 21:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:169381</guid><dc:creator>chrisgarty</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/169381.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=169381</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Last night I gave &lt;A href="http://www.ip3systems.com/chrisgarty/presentations/2004/Agile%20.Net%20Development%20-%20Part%201%20-%20Tools%20and%20Basics.ppt"&gt;a presentation&lt;/A&gt; at the &lt;A href="http://groups.yahoo.com/group/melbourne_XP_enthusiasts/"&gt;Melbourne Agile Developer Group (MXPEG)&lt;/A&gt;&amp;nbsp;about agile .Net development. The group has a higher proportion of Java developers, so I had volunteered to give a view of agile from a .Net perspective. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I only got through half of my material last night, so I'll be talking again next month.&amp;nbsp;Last night I presented information about a set of tools that can help if you are trying to follow some of the &lt;A href="http://www.extremeprogramming.org/"&gt;Extreme Programming&lt;/A&gt;&amp;nbsp;practices while using .Net. Next month I'll be focusing on design decisions in .Net that have helped me create applications with a simple and testable design.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The practices covered were: &lt;A href="http://www.extremeprogramming.org/rules/standards.html"&gt;Coding Standards&lt;/A&gt;, &lt;A href="http://www.extremeprogramming.org/rules/integrateoften.html"&gt;Continuous Integration&lt;/A&gt;, &lt;A href="http://www.extremeprogramming.org/rules/refactor.html"&gt;Refactoring&lt;/A&gt;, and &lt;A href="http://www.extremeprogramming.org/rules/unittests.html"&gt;Testing&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The technologies covered included: &lt;A href="http://www.nunit.org/"&gt;NUnit&lt;/A&gt;, &lt;A href="http://nunitasp.sourceforge.net/"&gt;NUnitAsp&lt;/A&gt;, &lt;A href="http://sourceforge.net/projects/nunitaddin"&gt;NUnitAddin&lt;/A&gt;, &lt;A href="http://www.nmock.org/"&gt;NMock&lt;/A&gt;, &lt;A href="http://www.picocontainer.org/"&gt;PicoContainer&lt;/A&gt;,&amp;nbsp;&lt;A href="http://www.gotdotnet.com/team/fxcop/"&gt;FxCop&lt;/A&gt;, &lt;A href="http://ccnet.thoughtworks.com/"&gt;CruiseControl.Net&lt;/A&gt;, &lt;A href="http://nant.sourceforge.net/"&gt;NAnt&lt;/A&gt;, &lt;A href="http://workspaces.gotdotnet.com/ncover"&gt;NCover&lt;/A&gt;,&amp;nbsp;and Microsoft's yet-to-be-released &lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/"&gt;Visual Studio Team System&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The presentation is available &lt;A href="http://www.ip3systems.com/chrisgarty/presentations/2004/Agile%20.Net%20Development%20-%20Part%201%20-%20Tools%20and%20Basics.ppt"&gt;here&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=169381" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/VS+Team+System/default.aspx">VS Team System</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Testability/default.aspx">Testability</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/My+Presentations/default.aspx">My Presentations</category></item><item><title>OJB.Net and Generics</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/06/08/150572.aspx</link><pubDate>Tue, 08 Jun 2004 21:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:150572</guid><dc:creator>chrisgarty</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/150572.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=150572</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I &lt;A href="http://weblogs.asp.net/chrisgarty/archive/2004/06/02/146312.aspx"&gt;posted a little while ago&lt;/A&gt; about trying to use reflection with generic types.&amp;nbsp;I have been trying to use a generic list type within &lt;A href="http://ojb-net.sourceforge.net/"&gt;OJB.Net&lt;/A&gt; (an object relational mapper for .Net).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I finished investigating this and&amp;nbsp;thought I'd post a write-up about it here in case anyone else is using or wants to use &lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://weblogs.asp.net/chrisgarty/articles/150558.aspx"&gt;OJB.Net and Generics&lt;/A&gt;&amp;nbsp;together: &lt;A href="http://weblogs.asp.net/chrisgarty/articles/150558.aspx"&gt;http://weblogs.asp.net/chrisgarty/articles/150558.aspx&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=150572" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Object+Relational/default.aspx">Object Relational</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>VSTS: Getting coded web tests to run</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/06/04/148102.aspx</link><pubDate>Fri, 04 Jun 2004 19:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:148102</guid><dc:creator>chrisgarty</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/148102.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=148102</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The coded web tests&amp;nbsp;supported by the &lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/tester/default.aspx"&gt;VSTS test tools&lt;/A&gt; really excite me. There are so many&amp;nbsp;web test scenarios that I can now create very easily with a combination of recording and scripting. This will nicely&amp;nbsp;complement&amp;nbsp;the ASP.Net testing capabilities I already have thanks to &lt;A href="http://nunitasp.sourceforge.net/"&gt;NUnitAsp&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;However when I&amp;nbsp;recorded a web test, generated the code from the test, and then tried to use that test the test runner wasn't able to&amp;nbsp;load my assembly. &lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;It gave me an error similar to this: &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;EM&gt;WebTestCoded&amp;nbsp;Coded Web Test&amp;nbsp;Error&amp;nbsp;Could not run web test 'WebTestCoded' on agent 'MyComputer': Could not create instance of class 'WebTestCoded' :File or assembly name 'WebTestProject1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null', or one of its dependencies, was not found.&amp;nbsp;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;So I jumped on the &lt;A href="http://communities.microsoft.com/newsgroups/default.asp?icp=whidbey&amp;amp;slcid=us"&gt;Microsoft newsgroups&lt;/A&gt;&amp;nbsp;and just got a reply to my query: You have to &lt;STRONG&gt;copy the assembly to VSDIR\Common7\IDE\PrivateAssemblies&lt;/STRONG&gt;. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;To help with this process, add a post build event similar to the one below to all projects with coded web tests: &lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;EM&gt;copy WebTestProject1.dll "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Thanks to Eric Adams (PM - &lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/"&gt;VSTS&lt;/A&gt; Test) for this solution!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=148102" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/VS+Team+System/default.aspx">VS Team System</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Testability/default.aspx">Testability</category></item><item><title>Generics in OJB.Net (a.k.a. Generics Type Madness)</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/06/02/146312.aspx</link><pubDate>Wed, 02 Jun 2004 22:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:146312</guid><dc:creator>chrisgarty</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/146312.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=146312</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;At iP3 we are using &lt;/FONT&gt;&lt;A href="http://ojb-net.sourceforge.net/"&gt;&lt;FONT face=Verdana size=2&gt;OJB.Net&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; for object relational persistence.&amp;nbsp;It is really easy to use, but it was using an ArrayList by default and we wanted to use the new Whidbey Generics List&amp;lt;&amp;gt; type. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;When OJB.Net&amp;nbsp;creates objects out of the relational data, it uses reflection to generate the IList collection object which is ArrayList by default. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;When we tried to change this to the Generics List&amp;lt;&amp;gt; type OJB.Net didn't seem to be able to handle it and reported that it couldn't find the type in the assembly. My collegue &lt;/FONT&gt;&lt;A href="http://weblogs.asp.net/lancea/archive/2004/06/01/146202.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Lance&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; and I sat and worked through the problem for about half an hour until he&amp;nbsp;did a GetType().ToString() on a List&amp;lt;&amp;gt; object. To our surprise we found that the type name we needed to Reflect for was &lt;FONT color=#000080&gt;System.Collections.Generic.List'1&lt;/FONT&gt;&amp;nbsp;linstead of&amp;nbsp;&lt;FONT color=#000080&gt;System.Collections.Generic.List&lt;/FONT&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The full line for getting the type for List&amp;lt;String&amp;gt; using reflection then becomes:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;FONT face="Courier New" color=#000080&gt;Type&amp;nbsp;classType = Type.GetType(&amp;#8220;System.Collections.Generic.List'1[[System.String,Mscorlib]],Mscorlib&amp;#8220;,true);&lt;/FONT&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Don Box has a good post about Generics reflection under the heading &lt;A href="http://www.gotdotnet.com/team/dbox/default.aspx?month=2003-08"&gt;Generics as Type Constructors&lt;/A&gt; from August 2003, but it doesn't mention anything about adding&amp;nbsp;a suffix to the type name.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;If someone has seen this suffix notation explained previously&amp;nbsp;then please shoot me a link.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Read more about the craziness on &lt;/FONT&gt;&lt;A href="http://weblogs.asp.net/lancea/archive/2004/06/01/146202.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Lance's blog&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=146312" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>VS 2005 May CTP Installation Gremlins</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/28/143613.aspx</link><pubDate>Sat, 29 May 2004 00:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:143613</guid><dc:creator>chrisgarty</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/143613.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=143613</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;When installing the Visual Studio 2005 May Community Technology Preview, there are three key things to remember:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;(1) Everything from the VS 2005 March CTP must be uninstalled before starting: MSDN, J#, .Net and VS.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;(2) You cannot install the VS 2005 May CTP from DVD. I don't know why, but you have to copy it to a hard disk on your PC or somewhere on your LAN.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;(3) After the May CTP .Net Framework has installed it will ask you to restart. Once the machine has restarted, the setup will run automatically but it will fail. You need to manually restart the setup process after this and it will continue on perfectly.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I don't know what the difference is between a hard disk and a DVD install. Maybe it is because of an error in my download of the ISO image. I wrote two DVD's and both exhibit this strange behaviour. If you have experienced this same behaviour, I'd love to hear from you so I can know whether or not this is a recurring problem.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=143613" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category></item><item><title>Visual Studio Community Technology Preview May 2004 - Installed!</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/28/143071.aspx</link><pubDate>Fri, 28 May 2004 08:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:143071</guid><dc:creator>chrisgarty</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/143071.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=143071</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I had some initial trouble installing the May Community Technology Preview (CTP), but after reading the instructions (what a novel idea!) I realised that I just needed to remove all the March components: MSDN, J#, framework, and Visual Studio (VS). Keep an eye on this when you install it, since it doesn't give you much information in the error messages.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I helped give a talk at the &lt;/FONT&gt;&lt;A href="http://www.mdnug.org/"&gt;&lt;FONT face=Verdana size=2&gt;Melbourne .Net User Group&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; last night about&amp;nbsp;the new&amp;nbsp;VS Team System (nee: Burton), and so I was really looking forward to using the tools that I had learned so much about. I'm pleased to report that it really is as simple to use and powerful as the website and the videos suggest.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The web testing&amp;nbsp;tool in VSTS is excellent. It is very simple to use and should support a wide variety of web applications. I tried it on a web application containing ASP.Net, plain HTML, Macromedia Flash, and Javascript and it worked beautifully first time. Web tests can be created either by demonstration (recording), or by hand coding in C# and VB.Net. The recording feature enables&amp;nbsp;any VS user&amp;nbsp;to&amp;nbsp;create automated regression tests very quickly.&amp;nbsp;I know a couple of people that will be very interested in the ability to automate their manual regression testing.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Over the next week I'll post some more information about the changes I notice from the March&amp;nbsp;CTP and some more information about the VSTS client tools.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=143071" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/VS+Team+System/default.aspx">VS Team System</category></item><item><title>Visual Studio Team System in May CTP</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/27/142678.aspx</link><pubDate>Thu, 27 May 2004 18:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:142678</guid><dc:creator>chrisgarty</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/142678.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=142678</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;SPAN class=Title&gt;My download of the May CTP is complete. The installation process includes an informative message about VSTS:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;EM&gt;&lt;SPAN class=Title&gt;Welcome to the Visual Studio 2005 Community Technology Preview May 2005 DVD&lt;/SPAN&gt; &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=Section1&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Verdana size=2&gt;&lt;EM&gt;This Community Technology Preview includes functionality from the Visual Studio Team System, a new suite of software lifecycle tools that will ship with Visual Studio 2005.&amp;nbsp; In the summer of 2005, we will release a Beta of Visual Studio.&amp;nbsp; Please be aware that this Beta will not include the Team System functionality.&amp;nbsp; We hope to release a formal Beta of the Team System by the end of the year.&amp;nbsp; We're providing this early look at the Team System functionality so that we can get feedback on the product and make any necessary changes to our plans.&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Verdana size=2&gt;&lt;EM&gt;All previous caveats about the Community Technology Preview program apply to this build: don't install it on machines you care about, be aware that you may have to reformat your drive in order to completely uninstall, and the feature set is incomplete and unstable in many ways.&amp;nbsp; The purpose of these builds is to help you contribute to the development process.&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;EM&gt;To that end, please submit any and all comments, feedback, or concerns to:&amp;nbsp;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/whidbey/newsgroups"&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;&lt;EM&gt;http://msdn.microsoft.com/whidbey/newsgroups&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;EM&gt;&lt;FONT color=#0000ff&gt;.&lt;/FONT&gt;&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Verdana size=2&gt;&lt;EM&gt;We look forward to hearing from you.&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Verdana size=2&gt;&lt;EM&gt;Thank you!&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;I'll do a post later about the VSTS functionality available. Installing now... :)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=142678" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/VS+Team+System/default.aspx">VS Team System</category></item><item><title>ObjectSpaces delay discussions</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/26/141972.aspx</link><pubDate>Wed, 26 May 2004 22:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:141972</guid><dc:creator>chrisgarty</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/141972.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=141972</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Some people are taking the &lt;/FONT&gt;&lt;A href="http://weblogs.asp.net/chrisgarty/archive/2004/05/24/140059.aspx"&gt;&lt;FONT face=Verdana size=2&gt;ObjectSpaces delay&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; a little harder than others.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I first&amp;nbsp;met &lt;/FONT&gt;&lt;A href="http://weblogs.asp.net/rmclaws/"&gt;&lt;FONT face=Verdana size=2&gt;Robert McLaws&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; when he hosted the PDC 2003 Object Relational BoF session. I just read one of his recent posts where he argues that the ObjectSpaces delay is good since it is &lt;/FONT&gt;&lt;A href="http://weblogs.asp.net/rmclaws/archive/2004/05/22/139666.aspx"&gt;&lt;FONT face=Verdana size=2&gt;good to get things right the first time&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;. He also tells the people who are disappointed to that their &amp;#8220;mentality&amp;#8221; is &amp;#8220;ridiculous&amp;#8221; and that they should &amp;#8220;Grow up. Seriously.&amp;#8221;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I think this is a little harsh on the people who were starting projects to hit the market in 2005 that would have used&amp;nbsp;ObjectSpaces. I don't think it is a bad thing for Microsoft to hear that their schedule changes affect ISV's and other customers.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I personally am grateful that Microsoft has delayed ObjectSpaces to combine it with the WinFS work. Making application data as accessible as files in the OS is a brilliant move.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Hopefully when Longhorn comes out we'll be&amp;nbsp;a lot closer to the holy grail of &amp;#8220;no more data silos&amp;#8221;.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=141972" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Object+Relational/default.aspx">Object Relational</category></item><item><title>Latest Visual Studio Community Tech Preview (May) is available</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/26/141924.aspx</link><pubDate>Wed, 26 May 2004 21:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:141924</guid><dc:creator>chrisgarty</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/141924.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=141924</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The latest Visual Studio (VS) Community Tech Preview (CTP) is available via &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/subscriptions/downloads/"&gt;&lt;FONT face=Verdana size=2&gt;MSDN subscriber downloads&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The most interesting part for those that are already familiar with the March VS CTP will be inclusion of Visual Studio Team System (VSTS). You can find out the full details about&amp;nbsp;VSTS&amp;nbsp;via &lt;A href="http://weblogs.asp.net/chrisgarty/archive/2004/05/25/140931.aspx"&gt;my earlier blog entry&lt;/A&gt; and the &lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/"&gt;official VSTS site&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/tims/archive/2004/05/25/141564.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Tim Sneath&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; reports from TechEd that the May VS CTP&amp;nbsp;will include the (VSTS) &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/developer/default.aspx"&gt;&lt;FONT face=Verdana size=2&gt;client tools&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;, but not the server tools. I would have found out myself, but the download still has 7 hours to go ;).&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=141924" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category></item><item><title>Visual Studio Team System Announced</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/25/140931.aspx</link><pubDate>Tue, 25 May 2004 23:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:140931</guid><dc:creator>chrisgarty</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/140931.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=140931</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There are interviews on &lt;/FONT&gt;&lt;A href="http://www.theserverside.net/"&gt;&lt;FONT face=Verdana size=2&gt;TheServerSide&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; and a good collection of links on &lt;/FONT&gt;&lt;A href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1359"&gt;&lt;FONT face=Verdana size=2&gt;Chris Sells' blog&lt;/FONT&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The unit testing and code coverage tools look fantastic in &lt;/FONT&gt;&lt;A href="http://www.activewin.com/awin/comments.asp?HeadlineIndex=24465"&gt;&lt;FONT face=Verdana size=2&gt;the videos&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;. The ability to increase the amount of communication through a simple integrated tool is going to be a great bonus for teams of any size.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I wonder how this will play with NUnit? Will we integrate existing NUnit tests into the VSTS suite or migrate the tests over to VSTS? Investigation time...&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=140931" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category></item><item><title>ObjectSpaces and MBF both delayed till Longhorn</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/24/140059.aspx</link><pubDate>Mon, 24 May 2004 21:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:140059</guid><dc:creator>chrisgarty</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/140059.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=140059</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;First we learned that &lt;A href="http://weblogs.asp.net/chrisgarty/archive/2004/05/11/129554.aspx"&gt;MBF has been delayed till Longhorn&lt;/A&gt; (from &lt;A href="http://blogs.msdn.com/timbrookins/archive/2004/05/10/129124.aspx"&gt;Tim Brookins&lt;/A&gt;)&amp;nbsp;and now &lt;A href="http://objectsharp.com/Blogs/barry/archive/2004/05/22/491.aspx"&gt;ObjectSpaces is adopting the same schedule&lt;/A&gt;. The official announcement is &lt;A href="http://msdn.microsoft.com/data/"&gt;here&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I wonder if&amp;nbsp;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;ObjectSpaces was delayed and that caused the MBF re-schedule, since MBF uses ObjectSpaces for persistence. Either way, because of the extra time, they'll both be stronger and more tightly integrated when they do get released.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=140059" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Object+Relational/default.aspx">Object Relational</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/MBF/default.aspx">MBF</category></item><item><title>Ouch: MBF delayed till Longhorn wave</title><link>http://blogs.msdn.com/chrisgarty/archive/2004/05/11/129554.aspx</link><pubDate>Tue, 11 May 2004 22:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:129554</guid><dc:creator>chrisgarty</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/chrisgarty/comments/129554.aspx</comments><wfw:commentRss>http://blogs.msdn.com/chrisgarty/commentrss.aspx?PostID=129554</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://blogs.msdn.com/timbrookins/"&gt;Tim Brookins&lt;/A&gt;, an architect on&amp;nbsp;the &lt;A href="http://www.microsoft-watch.com/article2/0,4248,1274625,00.asp"&gt;MBF&lt;/A&gt;&amp;nbsp;team, has &lt;A href="http://blogs.msdn.com/timbrookins/archive/2004/05/10/129124.aspx"&gt;reported that MBF is no longer in the Whidbey wave&lt;/A&gt; and instead will be in the Longhorn wave.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This is an exciting area of technology for Microsoft since it touches so many 'hot' areas: Microsoft's business application development (&lt;A href="http://www.informationweek.com/story/showArticle.jhtml?articleID=15201130"&gt;Green&lt;/A&gt;), service oriented architecture (Indigo), object relational persistence (ObjectSpaces), lightweight process support (in-process Biztalk process engine), and model driven architecture (Whitehorse) to name a few.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It is a shame that business application developers won't be able to start using the base classes to build business logic, but Tim&amp;nbsp;points out that&amp;nbsp;&amp;#8220;collapsing MBF into a single release [will] be more beneficial for our customers&amp;#8221; will allow MBF to focus&amp;nbsp;solely&amp;nbsp;on Longhorn. This is an exciting effort and one that I'll be watching carefully over the next 2 years.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=129554" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/Object+Relational/default.aspx">Object Relational</category><category domain="http://blogs.msdn.com/chrisgarty/archive/tags/MBF/default.aspx">MBF</category></item></channel></rss>