gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:43:26 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com