继承需求

应用于类的继承要求与应用于方法的继承要求具有不同的含义。 可以将继承要求放在类级别,以确保只有拥有指定权限的代码才能从您的类继承。 放在方法上的继承要求需要代码拥有指定的权限才能重写该方法。

注意注意

.NET Framework 4 版中新引入了一个透明度模型。安全透明的代码,级别 2 模型使用 SecurityCriticalAttribute 或 SecuritySafeCriticalAttribute 特性标识安全代码。安全关键代码要求调用方和继承者都完全受信任。从安全关键类型或成员继承的任何类型或成员都必须是安全关键的或是安全可靠关键的。如果使用早期代码访问安全性规则(级别 1)的程序集完全受信任,则可以调用级别 2 安全关键类型和成员。但是,级别 2 类型和成员必须明确指出继承要求,因为级别 2 隐式继承规则不适用于级别 1 调用方。

类继承要求

应用于类的继承要求将要求从父类派生的所有类都必须拥有指定的权限。 例如,如果类 B 将从类 A 继承,而类 A 由某个继承要求保护,则必须将该权限授予 B 才能运行 B。 如果将该权限授予类 B 并且类 B 从类 A 派生,且类 C 将从 B 派生,则类 C 也必须拥有 A 要求的权限。 此要求只能以声明方式应用。

下面的代码示例使用继承要求来要求从 MyClass1 类继承的任何类都必须拥有自定义权限 CustomPermissionAttribute。 此权限是假设的自定义权限,在 .NET Framework 中并不存在。 该要求通过将一个 SecurityAction.InheritanceDemand 枚举值传递给 CustomPermissionAttribute 来实现。

<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.
    }
}

方法继承要求

对基类中的静态方法提出继承要求对派生类不起作用,因为静态方法互不相关。 然而,对基类中的任何非静态方法提出继承要求与对类提出继承要求的效果相同。 派生类中的所有方法(包括类的构造函数)都必须满足该继承要求。

请参见

概念

利用特性扩展元数据

安全需求

创建自己的代码访问权限

添加声明式安全支持

代码访问安全性