Требования наследования
Обновлен: Ноябрь 2007
Требования наследования, применяемые к классам, отличаются по смыслу от требований наследования, применяемых к методам. Требования наследования можно реализовать на уровне класса для обеспечения возможности его наследования только классом, имеющим определенное разрешение. Требования наследования, применяемые к методу, требуют наличия указанного разрешения для переопределения этого метода.
Требования наследования классов
Применение требования наследования к классу приводит к тому, что все классы, наследующие этот родительский класс, имели определенное разрешение. Например, если класс B должен наследовать класс A, а класс A защищен требованием наследования, то для возможности выполнения классу B должно быть выдано это разрешение. Если класс B получает это разрешение и наследует класс A, то класс C также должен иметь разрешение, затребованное A, если ему необходимо унаследовать класс B. Это требование может применяться только декларативно.
В следующем примере кода требование наследования используется для того, чтобы потребовать от любого класса, наследующего класс MyClass1, пользовательского разрешения CustomPermissionAttribute. Это разрешение — гипотетическое, его не существует в .NET Framework. Это требование осуществляется передачей атрибуту CustomPermissionAttribute значения перечисления SecurityAction.InheritanceDemand.
<CustomPermissionAttribute(SecurityAction.InheritanceDemand)> _
Public Class MyClass1
Public Sub New()
End Sub
Public Overridable Function ReadData() As String
' Access a custom resource.
End Function
End Class
[CustomPermissionAttribute(SecurityAction.InheritanceDemand)]
public class MyClass
{
public MyClass()
{
}
public virtual string ReadData()
{
// Access a custom resource.
}
}
Требования наследования методов
Применение требования наследования к статическому методу в базовом классе не влияет на производные классы, поскольку статические методы являются несвязанными. Однако применение требования наследования к нестатическому методу в базовом классе приводит к тому же результату, что и применение требования наследования к классу. Все методы производного класса, включая его конструктор, должны соблюдать требование наследования.
См. также
Основные понятия
Создание собственных разрешений доступа к коду
Добавление поддержки декларативной безопасности