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 和“属性”窗口中。 对应的 EditorBrowsableState 为 Advanced。)EditorBrowsableAttribute 是提供给设计器的提示,指示是否显示属性或方法。
这种方法一般用作需要生成dll被其他项目引用时,同一解决方案中,虽然你增加了这个属性限制,但是不会产生作用,只有当其他解决方案引用此脚本时,才会有效。如下图,同一解决方案,使用[EditorBrowsable(EditorBrowsableState.Never)]还是会显示。
同一解决方案下,无任何影响
如下图所示,外部引用项目脚本的时候,再次使用,vs无此RawDom3方法的提示,因为RawDom3为EditorBrowsableState.Never,也就是不显示,但是还是可以正常使用;