簡體   English   中英

匿名類型集合

[英]Anonymous Type Collection

您將如何解決? 我想退回這個收藏:

Public Function GetShippingMethodsByCarrier(ByVal Carrier As ShippingCarrier) As List(of ?)

    Return Carrier.ShippingMethods.Select(Function(x) New With {.ID = x.ID, .Name = String.Format("{0} {1}", Carrier.Name, x.Description)})


End Function

謝謝!!

您不能從這樣的函數返回匿名類型,因為它沒有名稱。

由於這是一個公共函數,因此應具有定義明確的返回類型。 創建一個包含這兩個屬性的新類。

如果返回類型是推斷的通用參數,則可以返回它,但這不是您想要的。 這對於LINQ很有用,在LINQ中,匿名類型實際上是從參數傳遞到結果類型的,但對於您正在做的事情卻沒有用。

您也可以使用元組,但隨后會丟失屬性名稱。 而且它是不可擴展的,因為添加新屬性會破壞調用者代碼。 所以我也不建議這樣做。

這里的問題是您試圖以強類型返回匿名類型。 在VB.Net(或C#)中這是不可能的。 匿名類型是匿名的,它們的名稱不能在代碼中明確聲明。 解決此問題的兩種方法是

選項#1使用/創建如下的強命名類型

Structure Item
  Public ID as Integer
  Public Name As String
  Public Description As String
End Structure

選項#2將返回類型設置為Object並以后期綁定方式訪問列表

編輯

作為CodeInChaos,可以在通用上下文中以強類型方式返回它們。 但這似乎並不能幫助您解決這個特定問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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