mylifeinaminute.com

A take on anonymous methods in VB.Net

by liquidpooled on Apr.23, 2008, under Microsoft, Visual Studio 2005

Bookmark and Share

One of my colleagues has been thrust into the world of VB.Net (from C#) and has been lamenting the lack of anonymous methods in Visual Basic. Here is his implementation.

Anonymous method call:


Dim pred As New GenericPredicate(Of VendorData)(vd.VendorDataID, "VendorDataID")
Dim found As VendorData = Me.vendor.Data.Find(AddressOf pred.Match)

Generic Class:


Imports System.Reflection

<Serializable()> _
Public Class GenericPredicate(Of T)

#
Region "Member Methods"

    Private _value As Object
    Private _property As String

#
End Region

#
Region "Constructors"

Public Sub New()
    Me._value = Nothing
    Me._property = String.Empty
End Sub

Public Sub New(ByVal val As Object, ByVal prop As String)
    Me._value = val
    Me._property = prop
End Sub

#
End Region

#
Region "Public Properties"

Public Property Value() As Object
    Get
        Return _value
    End Get
    Set(ByVal value As Object)
        _value = value
    End Set
End Property

Public Property Prop() As String
    Get
        Return _property
    End Get
    Set(ByVal value As String)
        _property = value
    End Set
End Property

#
End Region

#
Region "Functions"

Public Function Match(ByVal p As T) As Boolean
    Dim t As Type = p.GetType()
    Dim prop As PropertyInfo = t.GetProperty(Me._property)
    Dim val As Object = prop.GetValue(p, Nothing)

    Return val.Equals(Me._value)
End Function
#End Region

End
Class

Just one more way to do it.

No comments for this entry yet...

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...