[英]From an Interface how do I return a generic/dynamic type from a function
我想在一個界面中創建一個看起來像這些功能的函數;
Function GetRecords AS Ilist(of T)
當實現接口時,我會設想用用戶,客戶或供應商等替換“ T”。顯然,編譯器不喜歡T本身指出未定義T。 我理解這一點,但是一定可以定義一些通用的東西。 我嘗試過使用Type,但是會導致尷尬的類型轉換。 使用對象似乎更成功,但是我找不到確切的最佳實踐或示例。
盡管我以IList(of T)為例,但它也可以很容易地成為IEnumerable(T)或ICollection(T)。 我實際上可以在界面中執行此操作嗎? 這可以在vb.net中完成。
您需要以與創建泛型類時相同的方式創建泛型接口。
Public Interface IRecords(Of T)
Function GetRecords() As IList(Of T)
End Interface
用法:
Public Class Foo
Implements IRecords(Of Foo)
Public Function GetRecords() As IList(Of Foo) Implements IRecords(Of Foo).GetRecords
'Return ...
End Function
End Class
另一種選擇是在“普通”接口內創建通用函數:
Public Interface IRecords
Function GetRecords(Of T)() As IList(Of T)
End Interface
用法:
Public Class Foo
Implements IRecords
Public Function GetRecords(Of T)() As IList(Of T) Implements IRecords.GetRecords
'Return ...
End Function
End Class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.