在VB中,如何强制继承类在类上使用属性?

时间:2009-10-29 16:44:56

标签: vb.net inheritance attributes class-library override

我正在尝试强制继承的类使用自定义属性。我正在创建一个类库,其中想要创建项目的用户将这样做,但是被迫将属性(或visual studio将自动添加默认属性)添加到其继承的类中。这是我希望实现的目标:

BaseClass.vb:

<CustomAttribute(10)> _
Public Class BaseClass

End Class

MyClass.vb:

<CustomAttribute(12)> _
Public Class MyClass
    Inherits BaseClass

    Public Sub New()
         Mybase.New()
    End Sub

End Class

所以这个想法很像你将一个函数标记为“MustOverride”,然后继承的类必须覆盖该函数,我希望该属性为“MustOverride”,导致继承的类指定值。

我已经尝试过了,它会起作用,但是如果我可以使用属性那么会更清晰:

BaseClass.vb:

Public MustInherit Class BaseClass

   Public MustOverride ReadOnly Property CustomAttribute() As String

End Class

MyClass.vb:

Public Class MyClass
    Inherits BaseClass

    Public Sub New()
         Mybase.New()
    End Sub

    Public Overrides ReadOnly Property CustomAttribute() As String
        Get
             Return "testing"
        End Get
    End Property
End Class

感谢您提供的任何帮助。

斯科特

2 个答案:

答案 0 :(得分:3)

您是否考虑过实施界面?我假设您正在使用基类,因为您想在基础中提供一些代码,如果没有,那么根据您的其他要求,接口可能会更好:

Interface IBase
    ReadOnly Property CustomAttribute() As String   
End Interface

它仍然非常紧凑,当您在新类中键入“Implements IBase”时,Visual Studio将为您填写代码。

答案 1 :(得分:2)

.NET中没有办法强制类在编译时定义属性。您能够做的最好的事情是在运行时检查属性是否已定义,如果不是,则抛出异常。