c# - 隐藏在继承类中的事件不起作用

标签 c# events inheritance

我试图从继承的类中隐藏事件,但不是通过 EditorBrowserable 属性。 我有一个继承自 FileSystemWatcherDelayedFileSystemWatcher,我需要隐藏 Changed、Created、Deleted 和 Renamed 事件并将它们设为私有(private)。 我试过这个,但它不起作用:

    /// <summary>
    /// Do not use
    /// </summary>
    private new event FileSystemEventHandler Changed;

XML 注释未显示在 IntelliSense 中(显示原始信息)。但是,如果我将访问修饰符更改为 public,则 XML 注释将显示在 IntelliSense 中。

欢迎任何帮助。

最佳答案

您不想使用它,但它可以轻松解决您的问题:

class MyWatcher : FileSystemWatcher {
    [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
    private new event FileSystemEventHandler Changed;
    // etc..
}

你唯一能做的就是封装它。这是可行的,这个类(class)没有那么多成员,你正在消除其中的几个:

class MyWatcher : Component {
    private FileSystemWatcher watcher = new FileSystemWatcher();
    public MyWatcher() {
        watcher.EnableRaisingEvents = true;
        watcher.Changed += new FileSystemEventHandler(watcher_Changed);
        // etc..
    }
    public string Path {
        get { return watcher.Path; }
        set { watcher.Path = value; }
    }
    // etc..
}

关于c# - 隐藏在继承类中的事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636906/

相关文章:

c# - 在函数之间通过引用传递字符串是否更快?

javascript - AJAX GET 竞争条件?

javascript enter 事件在谷歌上不起作用

c# - 创建实体后编辑 CRM 实体。 CRM 动态插件

c# - 当前上下文中不存在名称 'zipfile'

c# - 使用通用设置在同一应用程序中连接到 mysql 和 ms sql?

Javascript OOP 和继承技术

Javascript - 触发特定的键盘键

c++ - 传递基类指针

c++ - 用子类覆盖基类中定义的函数