Почему я не могу наследовать каталог IO.Directory?

Почему я не могу создать class в VB.NET этом inherits System.IO.Directory? По словам Лутца Рёдера, он не объявлен как NotInheritable!

Я хочу создать utility class, который добавит функциональности Directory class. Например, я хочу добавить функцию Directory.Move.

Пожалуйста, посоветуйте, и я пришлю вам упаковку из шести штук. Ладно, забудь, я тебе ничего не посылаю, но если ты придешь в бар сегодня вечером, я тебя зацеплю, а потом побью в пуле.


person Josh Stodola    schedule 25.09.2008    source источник
comment
Спасибо Джеффу Этвуду за редактирование моего сообщения и добавление тега VB.NET. Неудивительно, что вы больше не можете вести блог!   -  person Josh Stodola    schedule 26.09.2008
comment
Лол, он изменил содержание. Добавил тег :)   -  person Joel Coehoorn    schedule 26.09.2008


Ответы (4)


Из метаданных .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

Вы не можете наследовать от статического класса.

person David Basarab    schedule 25.09.2008

Вы используете C # 3.0 VB.NET 2008 - тогда вы можете добавить Метод расширения

person Lou Franco    schedule 25.09.2008
comment
Я знаю, но какой программист не спорит с семантикой? ;) - person CodeRedick; 26.09.2008

Если вы используете класс DirectoryInfo, у вас будет доступ к функции MoveTo.

РЕДАКТИРОВАТЬ: Я исправлюсь ... В статическом классе Directory уже есть метод Move.

person Austin Salonen    schedule 25.09.2008
comment
Мне все равно. Я пытаюсь переименовать каталог, а не перемещать его. - person Josh Stodola; 26.09.2008
comment
Не приведет ли перемещение каталога к новому имени к его эффективному переименованию? - person Rob; 26.09.2008

Я предполагаю, что Reflector неправильно подбирает атрибут sealed для VB (или, возможно, просто не отображает его должным образом). Если посмотреть на ИЖ, то он запломбирован:

class public abstract auto ansi sealed beforefieldinit Directory

person Community    schedule 25.09.2008