Share via


상속 요청

클래스에 적용된 상속 요청은 메서드에 적용된 상속 요청과 의미가 다릅니다. 상속 요청을 클래스 수준에 삽입하면 지정된 권한이 있는 코드만이 클래스에서 상속 받을 수 있습니다. 메서드에 상속 요청을 삽입하면 코드에 지정된 권한이 있어야 메서드를 재정의할 수 있습니다.

참고참고

.NET Framework 버전 4에는 새 투명성 모델이 추가되었습니다.보안 투명 코드, 수준 2 모델은 SecurityCriticalAttribute 또는 SecuritySafeCriticalAttribute 특성이 있는 보안 코드를 식별합니다.보안에 중요한 코드의 경우 호출자와 상속자가 모두 완전히 신뢰할 수 있어야 합니다.보안에 중요한 형식 또는 멤버에서 상속된 경우 모두 보안에 중요한 형식 또는 멤버이거나 보안 안전에 중요한 형식 또는 멤버여야 합니다.이전 코드 액세스 보안 규칙(수준 1)을 사용하는 어셈블리는 완전 신뢰되는 경우 보안에 중요한 형식(수준 2) 및 멤버를 호출할 수 있습니다.그러나 수준 2 암시적 상속 규칙은 수준 1 호출자에게 적용되지 않으므로 수준 2 형식과 멤버는 상속 요청을 구체적으로 식별해야 합니다.

클래스 상속 요청

클래스에 적용된 상속된 요청은 부모 클래스에서 파생된 모든 클래스가 지정된 권한을 갖도록 요청합니다. 예를 들어, 클래스 B가 클래스 A로부터 상속 받고 클래스 A가 상속 요청에 의해 보호되는 경우 B를 실행하려면 B에 해당 권한이 부여되어야 합니다. 클래스 B에 해당 권한이 부여되고 클래스 B가 클래스 A에서 파생된 경우, B에서 파생된 클래스 C도 A에 의해 요청되는 권한을 가져야 합니다. 이 요청은 선언적으로만 적용될 수 있습니다.

다음 코드 예제에서는 상속 요청을 사용하여 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.
    }
}

메서드 상속 요청

기본 클래스에서 정적 메서드에 상속 요청을 하더라도 정적 메서드는 관련이 없기 때문에 파생 클래스에는 아무런 영향을 미치지 않습니다. 그러나 기본 클래스에서 비정적 메서드에 상속 요청을 하면 해당 클래스에 대한 상속 요청과 동일한 효과를 얻습니다. 클래스 생성자를 비롯하여 파생 클래스의 모든 메서드가 상속 요청을 충족시켜야 합니다.

참고 항목

개념

특성을 사용하여 메타데이터 확장

보안 요청

사용자 고유의 코드 액세스 권한 만들기

선언적 보안 지원 추가

코드 액세스 보안