Tuesday, February 8, 2011

Why Can't I Inherit IO.Directory?

Why can't I create a class in VB.NET that inherits System.IO.Directory? According to Lutz Roeder, it is not declared as NotInheritable!

I want to create a utility class that adds functionality to the Directory class. For instance, I want to add a Directory.Move function.

Please advise and I will send you a six pack. OK nevermind I'm not sending you anything but if you come to the bar tonight I will hook you up and then beat you in pool.

  • Are you using C# 3.0 VB.NET 2008 -- then you could add an Extension Method

    Telos : Considering he specified VB.NET, I'm betting he isn't using C#...
    Lou Franco : Sorry, VB.NET has them too
    Telos : I know, but what kind of programmer doesn't argue semantics? ;)
    Lou Franco : No, you're right -- I corrected my answer -- thanks.
    From Lou Franco
  • If you use the DirectoryInfo class, you will have access to a MoveTo function.

    EDIT: I'll correct myself... The static Directory class already has a Move method.

    Josh Stodola : I don't care. I am trying to rename a directory, not move it.
    Rob : Won't moving the directory to the new name effectively rename it?
  • From the Meta Data of .NET

    namespace System.IO
    {
        // Summary:
        //     Exposes static methods for creating, moving, and enumerating through directories
        //     and subdirectories. This class cannot be inherited.
        [ComVisible(true)]
        public static class Directory
    

    You cannot inherit from a Static Class.

  • I'd guess that Reflector isn't picking up the sealed attribute correctly for VB (or perhaps just not displaying it properly). If you look at the IL, it is sealed:

    class public abstract auto ansi sealed beforefieldinit Directory

0 comments:

Post a Comment