【发布时间】:2013-12-26 21:21:25
【问题描述】:
请看下面的代码。 Namespaces 代表 DLL 分段,而不是同一个 DLL 中的 Namespaces
Public Interface ICoreTableCollection
End Interface
Public Interface ICoreTableInstance
End Interface
Namespace Address.Tier1
Public MustInherit Class AddressCollection(Of T As AddressInstance)
Implements ICoreTableCollection
End Class
Public MustInherit Class AddressInstance
End Class
End Namespace
Namespace PartnerAddress.Tier1
Public MustInherit Class PartnerAddressCollection(Of T As PartnerAddressInstance)
Implements ICoreTableCollection
End Class
Public MustInherit Class PartnerAddressInstance
MustOverride Function Parent(Of T As {ICoreTableCollection, New}, S As {ICoreTableInstance, New})() As S
End Class
End Namespace
Namespace Address.Tier2
Public Class AddressCollection(Of T As AddressInstance)
Inherits Address.Tier1.AddressCollection(Of T)
End Class
Public Class AddressInstance
Inherits Address.Tier1.AddressInstance
End Class
End Namespace
Namespace PartnerAddress.Tier2
Public Class PartnerAddressCollection(Of T As PartnerAddressInstance)
Inherits Tier1.PartnerAddressCollection(Of T)
End Class
Public Class PartnerAddressInstance
Inherits Tier1.PartnerAddressInstance
Public Overrides Function Parent(Of T As {New, ICoreTableCollection}, S As {New, ICoreTableInstance})() As S
End Function
'*****************
'This is what I want, but it's not allowed
'*****************
'Public Overrides Function Parent(Of T As {New, Address.Tier2.AddressCollection(Of S)}, S As {New, Address.Tier2.AddressInstance})() As S
'End Function
End Class
End Namespace
有没有办法扩展Tier2.PartnerAddress中的Parent函数约束使其看起来像这样。
'*****************
'This is what I want, but it's not allowed
'*****************
Public Overrides Function Parent(Of T As {New, Address.Tier2.AddressCollection(Of S)}, S As {New, Address.Tier2.AddressInstance})() As S
End Function
而不是
Public Overrides Function Parent(Of T As {New, ICoreTableCollection}, S As {New, ICoreTableInstance})() As S
End Function
【问题讨论】:
标签: .net vb.net generics inheritance