繼承需求
套用至類別的繼承需求不同於套用至方法的繼承需求。您可以在類別層級上放入繼承 (Inheritance) 需求,以確保只有使用指定使用權限的程式碼可以繼承您的類別。置於方法上的繼承需求會要求程式碼擁有指定的使用權限,才能覆寫該方法。
類別繼承需求
套用至類別的繼承需求和由擁有指定使用權限的父類別衍生的所有類別具有相同的需求效果。例如,類別 B 是繼承自類別 A,而類別 A 是受繼承需求保護,則類別 B 必須被授與該使用權限才可執行。如果類別 B 被授與該使用權限且衍生自類別 A,當類別 C 是衍生自類別 B 時,它也必須擁有類別 A 所需求的使用權限。這個需求只可利用宣告方式來套用。
以下的範例將使用繼承需求以指定任何繼承自這個類別的類別必須擁有自訂使用權限 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
[C#]
[CustomPermissionAttribute(SecurityAction.InheritanceDemand)]
public class MyClass
{
public MyClass()
{
}
public virtual string ReadData()
{
//Access a custom resource.
}
}
方法繼承需求
如果您在方法等級上放置一個繼承需求,指定的使用權限將套用至衍生類別 (Derived Class) 中所有被覆寫的方法。在指定方法上使用這個宣告可以選擇性地控制衍生類別的覆寫方法功能。
以下的範例將指定衍生自 MyClass
的所有類別必須擁有 CustomPermission
使用權限以覆寫 ReadData
方法。範例中的屬性和 SecurityAction.InheritanceDemand 是在方法層級上套用,而不是類別層級。
Public Class MyClass
Public Sub New()
End Sub
<CustomPermissionAttribute(SecurityAction.InheritanceDemand)> Public Overridable Function
ReadData() As String
'Access a custom resource.
End Function
End Class
[C#]
public class MyClass
{
public MyClass()
{
}
[CustomPermissionAttribute(SecurityAction.InheritanceDemand)]
public virtual string ReadData()
{
//Access a custom resource.
}
}
請參閱
使用屬性 (Attribute) 擴充中繼資料 | 安全性需求 | 建立您自己的程式碼存取使用權限 | 加入宣告式安全性支援 | 程式碼存取安全性