簡體   English   中英

如何從接口返回函數的泛型/動態類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM