4

更新 1:在此更新之前有点重复,但我认为现在它已经足够具体了,并且该副本根本没有回答这个编辑过的问题。好的,所以我发现我必须使用带有约束的通用类。关于如何仅限制从类派生的类的问题仍然存在。

实际上,我希望能够声明某种抽象属性,其类型在派生类中声明,但仅限于在原始类中声明的派生类型。让我们看这个例子:

Public Class ObjectBase
End Class

Public Class Derived1Class
inherits ObjectClass
Public Property1 as String
End Class

Public class Derived2Class
inherits ObjectClass
Public Property2 as string
End Class

Public Class SomeOtherClass(Of T as {OnlyClassesWhichInherits(ObjectBase)})
Public Property SomeProperty as T
End Class

Public Class SomeOtherDerivedClass
inherits SomeOtherClass
Sub New()
SomeProperty = New Derived1Class
SomeProperty.Property1:="this should be valid"
End Sub
End Class

我知道实现这一点的唯一方法是将 SomeProperty 声明为 Object(更新 1:现在我现在将此功能命名为泛型类)。如果我将 SomeProperty 声明为 ObjectBase,编译器对 SomeProperty=New DerivedClass 没有问题,但它抱怨 Property1 不是 ObjectBase 的成员,这是真的,但它仍然可以将 SomeProperty 作为对象。这意味着我感兴趣的那种行为已经存在于 .NET 中,并且在 Object 类(Update1:​​Generic Classes)中实现。

如何为 ObjecBase 的派生类编写约束?

4

1 回答 1

4
Public Class SomeOtherClass(Of T as {OnlyClassesWhichInherits(ObjectBase)})

您是否正在寻找……这个?:)

Public Class SomeOtherClass(Of T As ObjectBase)
于 2013-06-29T03:09:50.723 回答