【问题标题】:Why Can't I Inherit IO.Directory?为什么我不能继承 IO.Directory?
【发布时间】:2008-09-25 20:17:21
【问题描述】:

为什么我不能在 VB.NET 中创建一个 class inherits System.IO.Directory?根据 Lutz Roeder 的说法,它没有声明为 NotInheritable!

我想创建一个utility class,为Directory class 添加功能。例如,我想添加一个Directory.Move 函数。

请告知,我会寄给您六包。好吧,没关系,我不会给你发任何东西,但如果你今晚来酒吧,我会勾搭你,然后在台球中击败你。

【问题讨论】:

  • 感谢 Jeff Atwood 编辑我的帖子并添加 VB.NET 标签。难怪你不能再写博客了!
  • 大声笑,他改变了内容。我添加了标签:)

标签: vb.net inheritance system.io.directory


【解决方案1】:

来自 .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

您不能从静态类继承。

【讨论】:

    【解决方案2】:

    您使用的是 C# 3.0 VB.NET 2008 - 那么您可以添加Extension Method

    【讨论】:

    • 我知道,但是什么样的程序员不会争论语义呢? ;)
    【解决方案3】:

    如果您使用 DirectoryInfo 类,您将可以访问 MoveTo 函数。

    编辑:我会纠正自己...静态 Directory 类已经有一个 Move 方法。

    【讨论】:

    • 我不在乎。我正在尝试重命名目录,而不是移动它。
    • 将目录移动到新名称不会有效地重命名它吗?
    【解决方案4】:

    我猜 Reflector 没有为 VB 正确拾取密封属性(或者可能只是没有正确显示它)。如果你看一下IL,它是密封的:

    class public abstract auto ansi 密封 beforefieldinit目录

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 2015-02-03
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多