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
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
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
Upcoming Events

.NET Insight

Sign up for our newsletter.

I agree to this site's Privacy Policy.