CodeAccessPermission.Assert Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу. Assert() может вызвать проблемы системы безопасности.
public:
virtual void Assert();
public void Assert ();
abstract member Assert : unit -> unit
override this.Assert : unit -> unit
Public Sub Assert ()
Реализации
Исключения
У вызывающего кода отсутствует Assertion.
-или-
Уже имеется активное утверждение Assert() для текущего кадра.
Комментарии
Стек вызовов обычно представлен как растущий вниз, поэтому методы выше в стеке вызовов вызывают методы ниже в стеке вызовов. Вызов Assert предотвращает переход стека ниже в стеке вызовов за пределы кода, который вызывает этот метод. Таким образом, даже если вызывающие элементы выше в стеке вызовов не имеют необходимых разрешений для доступа к ресурсу, они по-прежнему могут получить к нему доступ с помощью кода, который вызывает этот метод с необходимым разрешением. Утверждение действует только в том случае, если код, вызывающийAssert, передает проверка безопасности для разрешения, которое он утверждает.
Вызов действует до Assert тех пор, пока вызывающий код не вернется к вызывающей. Только один из них Assert может быть активен в кадре. Попытка вызвать Assert , когда в кадре существует активный Assert объект , приводит к .SecurityException Вызовите RevertAssert или RevertAll , чтобы удалить активный Assertобъект .
Assert Игнорируется для разрешения, которое не предоставлено, так как запрос на это разрешение не будет выполнен. Однако если код ниже в стеке вызовов вызывает Demand это разрешение, SecurityException возникает, когда пошаговое руководство по стеку достигает кода, который пытался вызвать Assert. Это происходит из-за того, что коду, который вызвал Assert , не было предоставлено разрешение, несмотря на то, что он пытался выполнить Assert его.
Внимание!
Так как вызов Assert устраняет требование о том, что всему коду в цепочке вызовов должно быть предоставлено разрешение на доступ к указанному ресурсу, при неправильном или неправильном использовании могут возникнуть проблемы безопасности. Поэтому его следует использовать с большой осторожностью.
Примечания для тех, кто наследует этот метод
Этот метод нельзя переопределить.