Поделиться через


Требования наследования

Обновлен: Ноябрь 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.
    }
}

Требования наследования методов

Применение требования наследования к статическому методу в базовом классе не влияет на производные классы, поскольку статические методы являются несвязанными. Однако применение требования наследования к нестатическому методу в базовом классе приводит к тому же результату, что и применение требования наследования к классу. Все методы производного класса, включая его конструктор, должны соблюдать требование наследования.

См. также

Основные понятия

Требования безопасности

Создание собственных разрешений доступа к коду

Добавление поддержки декларативной безопасности

Другие ресурсы

Расширение метаданных с помощью атрибутов

Управление доступом для кода