Capture Variables with Closures: VB.NET: Create Anonymous Types: Listing 2

Anonymous types can be created from LINQ statements or explicitly through code. The type is known only in the scope of the local variable and can be passed only between methods as objects. Within the same assembly you can reconstitute the value in the original anonymous type, although it requires some tricks with generics and creates tightly coupled code.

Private Sub Test()
   Dim customers = Customer.GetNewCustomerList()
   Dim q = From cust In customers _
      Select cust.FirstName, cust.LastName
   DoSomething(q.ToArray())
End Sub

Private Sub DoSomething(ByVal items As Object())
   Dim dummy = New With _
      {.FirstName = "", .LastName = ""}
   For Each item In items
      Dim cust = Convert(dummy, item)
      If cust IsNot Nothing Then
         Console.WriteLine( _
            cust.LastName & ", " _
            & cust.FirstName)
      End If
   Next
End Sub

Private Function Convert(Of T As Class) _
   (ByVal dummy As T, ByVal item As Object) _
   As T
   Return TryCast(item, T)
End Function
comments powered by Disqus

Featured

  • VS Code 1.127 Further Integrates Advanced Browser-AI Tech

    Microsoft's July 1 Visual Studio Code update continues a recent push to make the editor's integrated browser a more capable development surface -- and a more useful tool for AI agents.

  • Support Vector Regression with SGD Training Using C#

    Support vector regression can predict numeric values effectively, and this article shows how to implement and train a kernel SVR model in C# using stochastic sub-gradient descent.

  • New GitHub Switch Limits Repo Issue Creation to Collaborators Only

    After publicly touting pull request limits as a way to cut maintainer noise, GitHub is taking the same idea further with a new setting that lets repository admins restrict issue creation to collaborators only.

  • Uno Platform Helps Ship First Stable SkiaSharp 4.0 Release for 2D .NET Graphics

    SkiaSharp 4.148.0 is the first stable v4 release, bringing a newer Skia engine, API cleanup, performance work and a Microsoft-Uno co-maintenance model.

Subscribe on YouTube