考慮以下擴展方法:VB.NET通用約束和亞類
<Extension()> _
Public Function Satisfies(Of T)(ByVal subject As T, ByVal specification As ISpecification(Of T)) As Boolean
Return specification.IsSatisfiedBy(subject)
End Function
此工作,如果對象是由本說明書在其上操作的確切類如預期。但是,如果規範正在檢查T的超類,那麼除非將主題明確地轉換爲超類,否則此擴展將不起作用。有沒有辦法可以避免這種情況?到目前爲止,我已經能夠拿出最好的是:
<Extension()> _
Public Function Satisfies(Of T As Class, K As Class)(ByVal subject As T, ByVal specification As ISpecification(Of K)) As Boolean
Return specification.IsSatisfiedBy(TryCast(subject, K))
End Function
但我不能不認爲有更好的辦法....
更新:
由於我(顯然)由於語言本身的限制無法完全按照我在VB.NET中的工作方式工作,我的第二次嘗試是以最安全/最有效的方式來執行此操作嗎?
感謝您的確認,已更新我的問題,試圖爲此限制獲得合理的解決方法。 – DanP 2010-09-17 19:29:34