在开发中,总是会有一些方法不期望让大家直接使用到,就可以通过 EditorBrowsable 特性让智能提示不显示这个属性或方法

假设我开发了这样一个类

    public class Foo
    {
        public void Doubi()
        {
            Console.WriteLine("林德熙是逗比");
        }
    }

我不想让小伙伴调用 Doubi 方法,但是我自己又想使用,此时就可以使用 EditorBrowsable 标记在方法

    public class Foo
    {
        [EditorBrowsable(EditorBrowsableState.Never)]
        public void Doubi()
        {
            Console.WriteLine("林德熙是逗比");
        }
    }

现在 VisualStudio 智能提示就不能够提示这个方法了,但是 Resharper 依然可以提示,只有通过 ReSharper > Options > Environment > IntelliSense > Completion Appearance 设置去掉 EditorBrowsable 的值才能不显示

于是现在小伙伴就无法从智能提示找到 Doubi 方法了,那么这个特性是在什么时候有用?在于自己写了一些不想让小伙伴用的属性或方法的时候

在 WPF 底层就在 DispatcherObject 的 CheckAccess 判断调用线程是否是创建线程的方法标记了这个特性,只有了解 WPF 依赖属性的小伙伴才能使用这个方法

当然这个做法没有接口隐藏的方法做的好,只是使用起来方便

Resharper 配置

EditorBrowsableAttribute Class


本文会经常更新,请阅读原文: https://lindexi.gitee.io/lindexi/post/VisualStudio-%E9%80%9A%E8%BF%87-EditorBrowsable-%E9%9A%90%E8%97%8F%E4%B8%8D%E5%BC%80%E6%94%BE%E7%9A%84%E5%B1%9E%E6%80%A7%E6%88%96%E6%96%B9%E6%B3%95.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系