<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Stuff that's in my head</title>
        <link>http://blog.colinmackay.net/Default.aspx</link>
        <description>Can open... Worms everywhere! The blog of Colin Angus Mackay</description>
        <language>en-GB</language>
        <copyright>Colin Angus Mackay</copyright>
        <managingEditor>colin.mackay@gmail.com</managingEditor>
        <generator>Subtext Version 1.9.0.27</generator>
        <image>
            <title>Stuff that's in my head</title>
            <url>http://blog.colinmackay.net/images/RSS2Image.gif</url>
            <link>http://blog.colinmackay.net/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Job Opening: Project Engineer, .NET Software Development Lead</title>
            <link>http://blog.colinmackay.net/archive/2008/08/18/3508.aspx</link>
            <description>&lt;p&gt;&lt;b&gt;Title: Project Engineer, &lt;/b&gt;.NET Software Development Lead&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Location:&lt;/b&gt; Glasgow, Scotland&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Salary: &lt;/b&gt;Based on experience level&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Job Description:&lt;/b&gt; Join Blue Dot’s UK/Glasgow based Software Development Project Services team! Blue Dot is one of the leading and successful enterprise mobile software, tools, and services company. With over 600 mobile implementations and 13,000 live mobile users, Blue Dot is recognized by the prestigious Gartner Group as a leading vendor in the enterprise mobile infrastructure space.     &lt;br /&gt;Specifically, this .NET Services Mobile Developer position will have you the opportunity to design and develop advanced functionality with our leading edge &lt;i&gt;mNOW! Mobile Framework 2008&lt;/i&gt; product. The mNOW! Mobile Framework 2008 builds upon the Microsoft technology stack, leveraging the power of the world’s leading operating systems, frameworks and products such as Windows and Windows Mobile, the .NET Framework (2.0 &amp;amp; 3.0), Internet Information Server 6.0, and SQL Server 2005.&lt;/p&gt;  &lt;p&gt;This is a varied and demanding customer service facing role involving many aspects of customizing and implementing enterprise mobile solutions from pre-sales work, through the project lifecycle, to ‘go live’ and ongoing support. This position is a key role in the success and delivery of solutions to our UK and Scotland customer base.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Responsibilities&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;· Scoping and implementing enterprise mobile solutions&lt;/p&gt;  &lt;p&gt;· Assisting with pre-sales demos and presentations&lt;/p&gt;  &lt;p&gt;· Performing Project needs assessments and requirements gathering&lt;/p&gt;  &lt;p&gt;· Assessing and advising on business process workflow design&lt;/p&gt;  &lt;p&gt;· Producing Senior level technical design and architecture guidance and outputs&lt;/p&gt;  &lt;p&gt;· Ability to training customer and provide ongoing support to solutions&lt;/p&gt;  &lt;p&gt;· Command of project methodologies&lt;/p&gt;  &lt;p&gt;· Good consultancy skills along with a development background&lt;/p&gt;  &lt;p&gt;· Ability to run workshops and follow-up on outcome deliverables&lt;/p&gt;  &lt;p&gt;· Specific and demonstrated experience of implementing standard .NET development technologies&lt;/p&gt;  &lt;p&gt;· Key technical contributor to customer RFI, RFP and RFQ responses&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Skills:&lt;/b&gt; Microsoft .NET 2.0, 3.0, &lt;/p&gt;  &lt;p&gt;Windows Communication Foundation, &lt;/p&gt;  &lt;p&gt;3+ years experience with relational database/data warehouse technologies&lt;/p&gt;  &lt;p&gt;3+ years experience with OOAD, modeling and UML.&lt;/p&gt;  &lt;p&gt;Web Services (WS 2.0).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Requirements:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;BS or Master Degree in Computer Science or related field&lt;/p&gt;  &lt;p&gt;2+ years of experience in the developing commercial software in .NET&lt;/p&gt;  &lt;p&gt;Strong background in Object-oriented design, implementation, and hands-on programming&lt;/p&gt;  &lt;p&gt;Excellent communication and relationship skills&lt;/p&gt;  &lt;p&gt;Energetic, self motivated, team player &lt;/p&gt;  &lt;p&gt;Strong problem solving &lt;/p&gt;  &lt;p&gt;Minute attention to detail&lt;/p&gt;  &lt;p&gt;English: Fluent &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Experience in the following products and skills also helpful:&lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;    &lt;br /&gt;Products:    &lt;br /&gt;Microsoft Visual Studio 2005 / 2008    &lt;br /&gt;Microsoft Team Foundation System    &lt;br /&gt;Microsoft SQL Server 2005 Administration    &lt;br /&gt;Microsoft Office Professional Suite    &lt;br /&gt;Skills:    &lt;br /&gt;Test Driven Development / Unit test development    &lt;br /&gt;Agile Development Lifecycle    &lt;br /&gt;Software Patterns &amp;amp; Practices&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Continuous Integration&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Strong Leadership/Mentoring&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Interested candidates please email Eric Roberts, VP of Professional Services at &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;a href="mailto:eroberts@bluedotsolutions.com"&gt;eroberts@bluedotsolutions.com&lt;/a&gt;. Thanks for your consideration&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blog.colinmackay.net/aggbug/3508.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Angus Mackay</dc:creator>
            <guid>http://blog.colinmackay.net/archive/2008/08/18/3508.aspx</guid>
            <pubDate>Mon, 18 Aug 2008 22:37:02 GMT</pubDate>
            <wfw:comment>http://blog.colinmackay.net/comments/3508.aspx</wfw:comment>
            <comments>http://blog.colinmackay.net/archive/2008/08/18/3508.aspx#feedback</comments>
            <wfw:commentRss>http://blog.colinmackay.net/comments/commentRss/3508.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Friday was my last day...</title>
            <link>http://blog.colinmackay.net/archive/2008/08/16/3483.aspx</link>
            <description>&lt;p&gt;&lt;a title="Colin and the Evil Monkey by Colin  Angus Mackay, on Flickr" href="http://www.flickr.com/photos/colinangusmackay/2671442974/"&gt;&lt;img style="margin: 0px 15px" height="375" alt="Colin and the Evil Monkey" src="http://farm4.static.flickr.com/3087/2671442974_92a29b9d5c.jpg" width="500" align="right" /&gt;&lt;/a&gt;Friday was my last day at Barbon Insurance Group Ltd. A company named after the guy that invented Fire Insurance, &lt;b&gt;Nicholas Unless-Jesus-Christ-Had-Died-For-Thee-Thou-Hadst-Been-Damned Barbon&lt;/b&gt;. I kid you not! (Incidentally, the change of name to BIGL, for short, had nothing to do with me handing in my notice. Although I have to admit, I had an urge to come in on my last day with a set of flying goggles, reminiscent of the famous fictional pilot, Biggles.)&lt;/p&gt;  &lt;p&gt;Just after I handed in my notice, I left my desk for a few moments and when I returned I discovered an &lt;a href="http://familyguy.wikia.com/wiki/Evil_Monkey" target="_blank"&gt;Evil Monkey&lt;/a&gt; sitting on my PC. (see right) Oops! My bad! He left again shortly afterwards. No doubt after realising that I wasn't &lt;a href="http://en.wikipedia.org/wiki/Chris_Griffin" target="_blank"&gt;Chris Griffin&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;My boss, Steve, (strictly speaking my boss's boss) gave a wonderful farewell speech that talked about the projects I worked on and my accomplishments since I started with Lumley, which was then bought over by Erinaceous, which was put into administration and split up, and ultimately became Barbon. He also said that it would have been nice if the business had actually allowed most of these projects to come to fruition and be put live. I completely concur with that sentiment, perhaps I would have felt more useful if it had. As it happens, only one of my projects went live (and it works very well I'm pleased to say). I have to say that I've enjoyed working with everyone in the development team immensely. I'll miss the camaraderie most. &lt;/p&gt;  &lt;p&gt;&lt;a title="I Survived... by Colin  Angus Mackay, on Flickr" href="http://www.flickr.com/photos/colinangusmackay/2768309354/"&gt;&lt;img style="margin: 0px 15px" height="375" alt="I Survived..." src="http://farm4.static.flickr.com/3235/2768309354_dde2c28fff.jpg" width="500" align="left" /&gt;&lt;/a&gt;My colleagues in Glasgow had a whip round and signed a card (see below) when I was down in Lincoln training up the developers there in how to use .NET. They raised much more than I expected so when I left they gifted me with an Ubuntu Linux 8.4 64-bit server install DVD, a Granny-Smith apple (the only apple I would accept [for the uninitiated it was a joke on my opinion about Apple Computers]), a T-shirt with "I survived &lt;strike&gt;Lumley&lt;/strike&gt; &lt;strike&gt;Erinaceous&lt;/strike&gt; Barbon" written on it (see left), and a Wii Fit. I felt really appreciated that gift because I know that Duncan had spent a lot of time phoning around and ultimately queuing for ages trying to get one, and his wife was most understanding also.&lt;/p&gt;  &lt;p&gt;After work, we went to the pub for a couple of drinks where Frank, my immediate boss, joined us after returning from holiday. We headed off to &lt;a href="http://www.spicegarden.com/" target="_blank"&gt;The Spice Garden&lt;/a&gt;, an Indian restaurant just across the Clyde to have an excellent meal. I have to say that the staff there are very pleasant and helpful and the food is great. I have to admit that my experience of Indian restaurants has generally not been good, but this place really makes up for it. The only thing that I would give as a negative is that it is directly under the tracks for Glasgow Central Station so you have trains rumbling overhead every two minutes. The best thing is that they do take-out as well. Did I mention the food was great!&lt;/p&gt;  &lt;p&gt;When I returned home I was full, but the &lt;a href="http://ms2.nintendo-europe.com/wiifit/enGB/index.html" target="_blank"&gt;Wii Fit&lt;/a&gt; was beckoning. I decided that I would watch an episode of &lt;a href="http://www.fox.com/house/" target="_blank"&gt;House&lt;/a&gt; first in order to let my food settle, then I could at least set it up and start using it the next day. When I went to set it up, I discovered that it would only give me measurements in imperial units. I don't understand those but I could not discover a way to change it. After going on line I discovered that by changing country it could change units. Apparently the United Kingdom is set to imperial. There were many forums of irritated people complaining that to use the units they wanted they had to change the language to Spanish - so they had a choice, a language they could not understand, or a set of units they could not understand. I eventually discovered that by going into the Wii Settings (for the whole console) and changing my country to "Australia" I could get the Wii Fit to display kilos and centimetres. However, that wiped out my settings for the Weather and News "channels" on the Wii. Apparently it was freezing in Sydney last night. Well, it is winter over there...&lt;/p&gt;  &lt;p align="center"&gt;&lt;a title="Leaving card (outside) by Colin  Angus Mackay, on Flickr" href="http://www.flickr.com/photos/colinangusmackay/2767096607/"&gt;&lt;img height="500" alt="Leaving card (outside)" src="http://farm4.static.flickr.com/3089/2767096607_9fdacd0a07.jpg" width="361" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt; &lt;a title="Leaving card (inside-left) by Colin  Angus Mackay, on Flickr" href="http://www.flickr.com/photos/colinangusmackay/2767095201/"&gt;&lt;img height="500" alt="Leaving card (inside-left)" src="http://farm4.static.flickr.com/3053/2767095201_13338ddc13.jpg" width="390" /&gt;&lt;/a&gt; &lt;a title="Leaving card (inside-right) by Colin  Angus Mackay, on Flickr" href="http://www.flickr.com/photos/colinangusmackay/2767093255/"&gt;&lt;img height="500" alt="Leaving card (inside-right)" src="http://farm4.static.flickr.com/3199/2767093255_00078e13cc.jpg" width="384" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:387d5f6e-33ef-428a-8eea-14e907000c18" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/barbon" rel="tag"&gt;barbon&lt;/a&gt;,&lt;a href="http://technorati.com/tags/evil%20monkey" rel="tag"&gt;evil monkey&lt;/a&gt;,&lt;a href="http://technorati.com/tags/chris%20griffin" rel="tag"&gt;chris griffin&lt;/a&gt;,&lt;a href="http://technorati.com/tags/lumley" rel="tag"&gt;lumley&lt;/a&gt;,&lt;a href="http://technorati.com/tags/erinaceous" rel="tag"&gt;erinaceous&lt;/a&gt;,&lt;a href="http://technorati.com/tags/glasgow" rel="tag"&gt;glasgow&lt;/a&gt;,&lt;a href="http://technorati.com/tags/lincoln" rel="tag"&gt;lincoln&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.net" rel="tag"&gt;.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/linux" rel="tag"&gt;linux&lt;/a&gt;,&lt;a href="http://technorati.com/tags/apple" rel="tag"&gt;apple&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Wii%20Fit" rel="tag"&gt;Wii Fit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Spice%20Garden" rel="tag"&gt;Spice Garden&lt;/a&gt;,&lt;a href="http://technorati.com/tags/House" rel="tag"&gt;House&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.colinmackay.net/aggbug/3483.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Angus Mackay</dc:creator>
            <guid>http://blog.colinmackay.net/archive/2008/08/16/3483.aspx</guid>
            <pubDate>Sat, 16 Aug 2008 18:03:10 GMT</pubDate>
            <wfw:comment>http://blog.colinmackay.net/comments/3483.aspx</wfw:comment>
            <comments>http://blog.colinmackay.net/archive/2008/08/16/3483.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.colinmackay.net/comments/commentRss/3483.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Visual Studio 2008 SP1</title>
            <link>http://blog.colinmackay.net/archive/2008/08/12/3331.aspx</link>
            <description>&lt;p&gt;Visual Studio 2008 SP1 is here and can be downloaded. &lt;a href="http://blogs.msdn.com/charlie/archive/2008/08/11/released-visual-studio-service-pack-1-net-3-5-service-pack-1.aspx"&gt;Details of the downloads are here&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;information on what SP1 brings is here&lt;/a&gt;. The big items for me are the Entity Framework and the performance improvements in LINQ.&lt;/p&gt;  &lt;p&gt;However, before you go rushing off to install SP1 there are some caveats. If you've been running the beta &lt;a href="http://blog.hinshelwood.com/"&gt;Martin Hinshelwood&lt;/a&gt; has &lt;a href="http://blog.hinshelwood.com/archive/2008/08/12/updating-to-visual-studio-2008-sp1.aspx"&gt;some advice&lt;/a&gt; and has also run in to &lt;a href="http://blog.hinshelwood.com/archive/2008/08/12/problems-with-team-explorer-after-installed-visual-studio-2008-sp1.aspx"&gt;problems running the Team Foundation Server SP1 install&lt;/a&gt; too.&lt;/p&gt;  &lt;p&gt;Once you've installed the Service Pack you might want to download the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&amp;amp;displaylang=en"&gt;Enhancements Training Kit&lt;/a&gt; in order to learn what's new.&lt;/p&gt;  &lt;p&gt;Finally, if you have Visual Studio 2008 Standard edition or above (not including trials) you can download the &lt;a href="http://www.axialis.com/download/iwlite.html"&gt;IconWorkshop Lite&lt;/a&gt; from &lt;a href="http://www.axialis.com"&gt;Axialsis&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8b800675-0cba-4fb5-aafc-993c8a7918a7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sp1" rel="tag"&gt;sp1&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vs2008" rel="tag"&gt;vs2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio%202008" rel="tag"&gt;Visual Studio 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team%20Foundation%20Server" rel="tag"&gt;Team Foundation Server&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.colinmackay.net/aggbug/3331.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Angus Mackay</dc:creator>
            <guid>http://blog.colinmackay.net/archive/2008/08/12/3331.aspx</guid>
            <pubDate>Tue, 12 Aug 2008 22:23:06 GMT</pubDate>
            <wfw:comment>http://blog.colinmackay.net/comments/3331.aspx</wfw:comment>
            <comments>http://blog.colinmackay.net/archive/2008/08/12/3331.aspx#feedback</comments>
            <wfw:commentRss>http://blog.colinmackay.net/comments/commentRss/3331.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Curious calculation</title>
            <link>http://blog.colinmackay.net/archive/2008/08/11/3310.aspx</link>
            <description>&lt;p&gt;Last weekend I had to replace two tyres on my car as they were wearing down. It cost £85.50 each to replace them. I was told that usually the back wheels wear away at half the rate of the front tyres. Given that the car has done 25,000 miles, it means that for every 50,000 miles I should have bought 6 new tyres. 6 tyres will cost £513. £513 into 50,000 miles is £0.01026.&lt;/p&gt;  &lt;p&gt;Put it another way, my &lt;strong&gt;tyres wear away at a rate of just over 1 penny per mile driven&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Or, in terms of fuel costs, it would be like adding roughly 9p to a litre of petrol.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7c375aa7-c43d-4205-830d-c030746e5f4f" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/fuel" rel="tag"&gt;fuel&lt;/a&gt;,&lt;a href="http://technorati.com/tags/tyres" rel="tag"&gt;tyres&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cost" rel="tag"&gt;cost&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.colinmackay.net/aggbug/3310.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Angus Mackay</dc:creator>
            <guid>http://blog.colinmackay.net/archive/2008/08/11/3310.aspx</guid>
            <pubDate>Mon, 11 Aug 2008 20:55:28 GMT</pubDate>
            <wfw:comment>http://blog.colinmackay.net/comments/3310.aspx</wfw:comment>
            <comments>http://blog.colinmackay.net/archive/2008/08/11/3310.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.colinmackay.net/comments/commentRss/3310.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Mixins in .NET (again)</title>
            <link>http://blog.colinmackay.net/archive/2008/08/10/3302.aspx</link>
            <description>&lt;p&gt;A while ago I wrote about &lt;a href="http://blog.colinmackay.net/archive/2008/02/24/1895.aspx" target="_blank"&gt;Mixins in C# 3.0&lt;/a&gt;, at the time I was saying that you can get some of the functionality, but not all, from some of the new language features in C#3.0. The solution is a bit of a fudge because the language doesn't support the concept. I've been looking at &lt;a href="http://www.remobjects.com/product/page.asp?id={E10F7F5C-AE94-4833-9E4B-2EDD5ED69768}" target="_blank"&gt;Oxygene&lt;/a&gt; recently and it has some language features that go a bit further than C# does and will support greater mixin-like functionality which it calls interface delegation. &lt;/p&gt;  &lt;p&gt;Interface delegation is again a bit of a fudge, but not quite like C#. In this case the language supports this mixin-like functionality and the fudge happens in the compiler. Let's take the class hierarchy that I used the last time:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a title="Class-Diagram-2 by Colin  Angus Mackay, on Flickr" href="http://www.flickr.com/photos/colinangusmackay/2287423942/"&gt;&lt;img height="405" alt="Class-Diagram-2" src="http://farm3.static.flickr.com/2112/2287423942_1be2458fac_o.png" width="658" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In Oxygene the Dog class looks like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;interface&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;y&lt;span class="kwrd"&gt;&lt;/span&gt;p&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;o&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;=&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;(&lt;span class="kwrd"&gt;&lt;/span&gt;M&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;,&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;,&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;)&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;f&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;c&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;:&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;M&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;x&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;p&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;s&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;s&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;f&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;c&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;:&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;M&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;x&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;p&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;s&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;d&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;p&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;o&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;d&lt;span class="kwrd"&gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;From this we can see that &lt;strong&gt;Dog&lt;/strong&gt; inherits from &lt;strong&gt;Mammal&lt;/strong&gt; and implements &lt;strong&gt;IRun&lt;/strong&gt; and &lt;strong&gt;ISwim&lt;/strong&gt;. The &lt;strong&gt;IRun&lt;/strong&gt; interface has one method (&lt;strong&gt;Run&lt;/strong&gt;), and the &lt;strong&gt;ISwim&lt;/strong&gt; interface has only one method also (&lt;strong&gt;Swim&lt;/strong&gt;). Of course, there could be as many methods and properties as you like.&lt;/p&gt;

&lt;p&gt;The C# version of the Dog class, as produced by Reflector, looks like this:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;o&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;:&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;M&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;,&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;,&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;{&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="rem"&gt;// Fields&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;M&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;x&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;f&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;c&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;M&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;x&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;s&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;f&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;c&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="rem"&gt;// Methods&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;(&lt;span class="kwrd"&gt;&lt;/span&gt;)&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;{&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;f&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;c&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&lt;/span&gt;R&lt;span class="kwrd"&gt;&lt;/span&gt;u&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;(&lt;span class="kwrd"&gt;&lt;/span&gt;)&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;}&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;(&lt;span class="kwrd"&gt;&lt;/span&gt;)&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;{&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&lt;/span&gt;s&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;I&lt;span class="kwrd"&gt;&lt;/span&gt;n&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;r&lt;span class="kwrd"&gt;&lt;/span&gt;f&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;c&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;D&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;l&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;g&lt;span class="kwrd"&gt;&lt;/span&gt;a&lt;span class="kwrd"&gt;&lt;/span&gt;t&lt;span class="kwrd"&gt;&lt;/span&gt;e&lt;span class="kwrd"&gt;&lt;/span&gt;.&lt;span class="kwrd"&gt;&lt;/span&gt;S&lt;span class="kwrd"&gt;&lt;/span&gt;w&lt;span class="kwrd"&gt;&lt;/span&gt;i&lt;span class="kwrd"&gt;&lt;/span&gt;m&lt;span class="kwrd"&gt;&lt;/span&gt;(&lt;span class="kwrd"&gt;&lt;/span&gt;)&lt;span class="kwrd"&gt;&lt;/span&gt;;&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;/span&gt;}&lt;span class="kwrd"&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;}&lt;/pre&gt;

&lt;p&gt;As you can see, there are two private fields holding a reference to the appropriate mixin, in each of the methods the responsibility for carrying out the action is delegated to the appropriate surrogate mixin object.&lt;/p&gt;

&lt;p&gt;What you will also notice is that you still have to instantiate the surrogate mixin objects. Under normal circumstances that would be in the constructor. If it were a real mixin you wouldn't have the option as the mixin would be created at the same time as the object it is used with. In fact, the mixin would be &lt;em&gt;mixed in&lt;/em&gt; as part of the object itself. So, perhaps interface delegates gives you slightly greater power than with a real mixin as you could reuse the surrogate mixin object. Then again, would you want to? I've not been able to think of a scenario where I would, but perhaps it could be useful.&lt;/p&gt;

&lt;p&gt;I'd like to see interface delegates in C# at some point in the future (sooner rather than later). In fact, I'd like to see proper mixin functionality, but I recon that will require changes to the CLR to support multiple inheritance. In the meantime, I think I'll have to write some sort of snippet in C# to quickly generate the code that Oxygene gives me in one line. Either that or start writing in Oxygene... Now, there's a thought!&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c4866e66-ce36-4e3d-a1b1-4a4c4b588b76" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Oxygene" rel="tag"&gt;Oxygene&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/interface%20delegates" rel="tag"&gt;interface delegates&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mixin" rel="tag"&gt;mixin&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.colinmackay.net/aggbug/3302.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Colin Angus Mackay</dc:creator>
            <guid>http://blog.colinmackay.net/archive/2008/08/10/3302.aspx</guid>
            <pubDate>Sun, 10 Aug 2008 23:55:22 GMT</pubDate>
            <wfw:comment>http://blog.colinmackay.net/comments/3302.aspx</wfw:comment>
            <comments>http://blog.colinmackay.net/archive/2008/08/10/3302.aspx#feedback</comments>
            <wfw:commentRss>http://blog.colinmackay.net/comments/commentRss/3302.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>