.net-3.5 - 为什么DispatcherObject.CheckAccess()和VerifyAccess()对Intellisense隐藏?

标签 .net-3.5 intellisense

System.Windows.Threading.DispatcherObject类(基于DependencyObject的类)包含一个有用的函数CheckAccess(),它确定代码是否在UI线程上运行。

当我昨天想使用它时,我很困惑地发现Intellisense没有显示该功能(也没有VerifyAccess(),即使MSDN库列出了该功能,该功能也没有在UI线程上抛出异常)。我决定使用Reflector调查类(class)。似乎该函数具有附加的EditorBrowsable(EditorBrowsableState.Never)属性。 Dispatcher使用的DispatcherObject类具有与CheckAccess()VerifyAccess()相同的属性:

public abstract class DispatcherObject
{
    // ...

    [EditorBrowsable(EditorBrowsableState.Never)]
    public bool CheckAccess();
    [EditorBrowsable(EditorBrowsableState.Never)]
    public void VerifyAccess();

    // ...

    [EditorBrowsable(EditorBrowsableState.Advanced)]
    public Dispatcher Dispatcher { get; }
}


public sealed class Dispatcher
{
    // ...

    [EditorBrowsable(EditorBrowsableState.Never)]
    public bool CheckAccess();
    [EditorBrowsable(EditorBrowsableState.Never)]
    public void VerifyAccess();

    // ...
}

我不认为该属性的应用是随机的(或者是个 Jest ),所以我的问题是:为什么在那儿?那些方法不应该直接调用吗?那么,为什么不使用protected(或internal,如WPF中一些最有用的方法)呢?

最佳答案

Microsoft员工recently stated CheckAccess仅用于“高级方案”,因此他们将其隐藏在Intellisense中。

"CheckAccess and VerifyAccess have always been marked to be not visible, maybe IntelliSense wasn't respecting it. You can use Reflector to confirm. The idea here is that CheckAccess and VerifyAccess are advances scenarios, that normal developers don't need.

However, I do think that EditorBrowsableState.Advanced would have been a more appropriate level."



此缺点有一个Microsoft Connect案例。 Vote for it对您来说很重要。

关于.net-3.5 - 为什么DispatcherObject.CheckAccess()和VerifyAccess()对Intellisense隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17500/

相关文章:

c# - 正则表达式 - 改进搜索并添加第三组

.net-3.5 - 支持 .Net 3.5 的 StructureMap 最新版本是什么?

c# - 寻找 C# 代码解析器

Resharper 智能感知困惑

angularjs - Visual Studio 2015 Angular2 html 变量智能感知/编译检查

C# 将整数显示为二进制/十进制。怎么换显示器?

c# - 你能用一个命名管道客户端读写吗?

asp.net - 使用 Azure ACS 和 Asp.Net 3.5 的 Win2003 R2 上的 WIF 异常

.net - UserPrincipal.FindByIdentity坚持 "There is no such object on the server."

sql-server - 如何自动刷新SQL Server Management Studio智能感知缓存?