当前位置 : 主页 > 手机开发 > 其它 >

.net – 如何将属性声明为限制为继承基类的类的泛型类型?

来源:互联网 收集:自由互联 发布时间:2021-06-19
Update1:​​在此更新之前它有点重复,但我认为现在它已经足够具体了,副本根本不回答这个编辑过的问题. 好的,所以我发现我必须使用带有约束的通用类.问题仍然存在,我如何只限制从
Update1:​​在此更新之前它有点重复,但我认为现在它已经足够具体了,副本根本不回答这个编辑过的问题.
好的,所以我发现我必须使用带有约束的通用类.问题仍然存在,我如何只限制从类派生的类.

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

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(Update1:​​现在我现在将此功能命名为泛型类).如果我将SomeProperty声明为ObjectBase,编译器对SomeProperty = New DerivedClass没有问题,但它抱怨Property1不是ObjectBase的成员,这是真的,但它仍然可以将SomeProperty用作Object.
这意味着我感兴趣的行为已经存在于.NET中,它在Object类(Update1:​​Generic Classes)中实现.

如何将约束写入ObjecBase的派生类?

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

你也许正在寻找……这个?

网友评论