EditorBrowsable以及EditorBrowsableState的特性

Jumony代码的基本接口 IHtmlDomObject中的代码如下
public interface IHtmlDomObject
  {
    /// <summary>
    /// 获取在原始文档对象树上的对象,如果原始对象不存在,返回null
    /// </summary>
    object RawObject
    {
      get;
    }

    /// <summary>
    /// 获取 DOM 对象的原始 HTML,如果不支持,返回null
    /// </summary>
    [EditorBrowsable( EditorBrowsableState.Advanced )]
    string RawHtml
    {
      get;
    }

    /// <summary>
    /// 获取 DOM 对象所属的文档
    /// </summary>
    IHtmlDocument Document
    {
      get;
    }
  }
对于[EditorBrowsable( EditorBrowsableState.Advanced )]之前一直没有了解,查看源码发现,EditorBrowsable是一个设置默认状态的方法,也就是,构造函数有两种,一种无参数,一种参数为EditorBrowsableState的枚举值
// 摘要:
        //     属性或方法都可从编辑器内浏览。
        Always = 0,
        //
        // 摘要:
        //     该属性或方法是永远不会从编辑器内可浏览。
        Never = 1,
        //
        // 摘要:
        //     属性或方法是应该会看到一种功能,只有高级用户。 编辑器可以显示或隐藏此类属性。
        Advanced = 2,

EditorBrowsableState.Always一直显示,never不显示,Advanced需要调节(在 Visual C# 中,可以使用“工具”|“选项”|“文本编辑器”|“C#”下的“隐藏高级成员”设置来控制高级属性何时显示在 Intellisense 和“属性”窗口中。 对应的 EditorBrowsableStateAdvancedEditorBrowsableAttribute 是提供给设计器的提示,指示是否显示属性或方法。

这种方法一般用作需要生成dll被其他项目引用时,同一解决方案中,虽然你增加了这个属性限制,但是不会产生作用,只有当其他解决方案引用此脚本时,才会有效。如下图,同一解决方案,使用[EditorBrowsable(EditorBrowsableState.Never)]还是会显示。

同一解决方案下,无任何影响


如下图所示,外部引用项目脚本的时候,再次使用,vs无此RawDom3方法的提示,因为RawDom3为EditorBrowsableState.Never,也就是不显示,但是还是可以正常使用;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值