繼承要求
更新:2007 年 11 月
套用至類別的繼承要求不同於套用至方法的繼承要求。您可以在類別層級上放入繼承要求,以確保只有使用指定使用權限的程式碼可以繼承您的類別。置於方法上的繼承要求會要求程式碼擁有指定的使用權限,才能覆寫該方法。
類別繼承要求
套用至類別的繼承要求和由擁有指定使用權限的父類別衍生的所有類別具有相同的需求效果。例如,類別 B 是繼承自類別 A,而類別 A 是受繼承要求保護,則類別 B 必須被授與該使用權限才可執行。如果類別 B 被授與該使用權限且衍生自類別 A,當類別 C 是衍生自類別 B 時,它也必須擁有類別 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.
}
}
方法繼承要求
由於沒有相關的靜態方法,因此在基底類別的靜態方法上放置繼承要求對衍生類別並沒有影響。然而,在基底類別的任何非靜態方法上放置繼承要求,其效果會與將繼承要求置於類別上的效果相同。衍生類別中的所有方法 (包括類別中的建構函式 (Constructor)),都必須符合繼承要求。