Whidbey is soooo cool...

Development, Whidbey Comments

... but I have to switch back to .NET 1.1 because of this bug issue:

VSCorePackage

I've already written about 2k lines, but this issue bars me from doing any UI development Dead Additionally, I don't want to wait another year before releasing this project.

However, while porting back, I've noticed how much Whidbey will easen the developer's life:

  • Anonymous delegates make your source code much clearer.
  • Generics allow you do write more, well, generic code.
  • System.Xml.XmlTextWriter/Reader 2.0 implement IDisposable.

.NET 1.1 is so... yesterday.

Update: I'm missing the System.Windows.Form.WebBrowser control, too.

PDC Retrospection

PDC '03 Comments

Today's the PDC retrospection "Neues aus L.A." organized by newtelligence AG. You don't know newtelligence? Well, you may know Clemens Vasters, writer of dasBlog. He's the CTO of newtelligence.

However, this restrospection is for all those people who couldn't attend this year's PDC. Clemens, Michael Willers, and Jörg Freiberger are going to speak about WinFS, Indigo, Avalon, and ASP.NET 2.0.

Though I attended the PDC myself (including the Blogger BoF), I'll glad to meet both other PDCians and non-PDCians. Of course I'll wear my "I'm blogging this" T-shirt Wink

Microsoft Virtual PC 2004 RTM

Development, Software Comments

Microsoft released Virtual PC 2004 to manufacturing.

However, it's not available for MSDN yet, but:

Microsoft Virtual PC 2004 will be made available later this year through Microsoft's existing retail and volume licensing channels. It also will be included in Microsoft's MSDN® subscriptions, and volume discounts are available through Microsoft's Open, Select and Enterprise Agreement volume licensing programs.

C# 2.0 generics

Development Comments

I'm playing around with C# 2.0 templates a.k.a. generics. I was really missing them in the past, but finally, they're there.

However, the specification for C# 2.0 says in §20.1.1: A type parameter cannot be used directly to declare a base class or interface. Why such a restriction? In some cases you may be able to write your own base class, but often you're not. If I want to extend several existing classes with some additional functionality, I can't. Of course I could derive from each class and add my desired members, but if it's functionality I want to add to a few classes, it's quite impractical.

I've written an example. This generic would write to the console, whenever the base control is clicked:

public class ClickedControl : T where T : System.Windows.Forms.Control
{
    public ClickedControl()
    {
        base.Click += new base_Click;
    }

    private void base_Click(object sender, EventArgs e)
    {
        Console.WriteLine(base.Text + " was clicked");
    }
}

In your code you could just write

ClickedControl<System.Windows.Forms.Button> myButton;

Don't try that home. Well, you may try it, but won't compile. Unfortunately.