Dlaczego DispatcherObject.CheckAccess () i VerifyAccess () są ukryte przed Intellisense?

TheSystem.Windows.Threading.DispatcherObject klasa (któraDependencyObject jest oparty na) zawiera użyteczną funkcję, zwanąCheckAccess(), który określa, czy kod działa w wątku interfejsu użytkownika.

Kiedy chciałem go wczoraj użyć, zdziwiło mnie, że Intellisense nie wyświetla tej funkcji (aniVerifyAccess(), który zgłasza wyjątek, gdy nie znajduje się w wątku interfejsu użytkownika), mimo że biblioteka MSDN wyświetla go. Postanowiłem zbadać klasę za pomocą reflektora. Wydaje się, że dana funkcja maEditorBrowsable(EditorBrowsableState.Never) atrybut dołączony do niego. TheDispatcher klasa, z której korzystaDispatcherObject, ma przypisany ten sam atrybutCheckAccess() iVerifyAccess():

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();

    // ...
}

Nie wierzę, że zastosowanie tego atrybutu jest losowe (lub żart), więc moje pytanie brzmi: dlaczego tam jest? Czy te metody nie powinny być wywoływane bezpośrednio? Więc dlaczego nieprotected (lubinternal, jak niektóre z najbardziej przydatnych metod w WPF)?

questionAnswers(2)

yourAnswerToTheQuestion