3

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

基类.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”,从而导致继承的类指定值。

我试过这个,它会工作,但如果我可以使用属性会更干净:

基类.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

感谢您提供任何帮助。

斯科特

4

2 回答 2

3

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

Interface IBase
    ReadOnly Property CustomAttribute() As String   
End Interface

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

于 2012-06-19T15:29:22.680 回答
2

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

于 2009-10-29T16:48:42.373 回答