我正在尝试强制继承的类使用自定义属性。我正在创建一个类库,其中想要创建项目的用户将这样做,但是被迫将属性(或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
感谢您提供的任何帮助。
斯科特
答案 0 :(得分:3)
您是否考虑过实施界面?我假设您正在使用基类,因为您想在基础中提供一些代码,如果没有,那么根据您的其他要求,接口可能会更好:
Interface IBase
ReadOnly Property CustomAttribute() As String
End Interface
它仍然非常紧凑,当您在新类中键入“Implements IBase”时,Visual Studio将为您填写代码。
答案 1 :(得分:2)
.NET中没有办法强制类在编译时定义属性。您能够做的最好的事情是在运行时检查属性是否已定义,如果不是,则抛出异常。