Returning an Anonymous type

TL;DR

Explains how to return and use anonymous types from functions in VB.NET, highlighting late binding, Option Strict settings, and limitations like lack of IntelliSense.

7 January 2008
Written by Martin Hinshelwood
1 minute read
Comments
Subscribe

image In VB.NET it is actually possible to return an Anonymous type from a function and use it somewhere else. In VB.NET you need to use late binding so you can’t change the “Option strict” compiler option to true as I have always done in the past. This option, that defaults to “Off”, is the main reason that C# developers scoff at VB, but this feature is now available, controversially in C#.

In this example I created an anonymous type that has three properties.

    Public Function GetTwiterCredentials() As Object
        If Not My.Settings.TwitterEmail.Length > 3 Then
            GetSettings()
        End If
        If Not My.Settings.TwitterPassword.Length > 3 Then
            GetSettings()
        End If
        If Not My.Settings.TwitterUsername.Length > 3 Then
            GetSettings()
        End If
        Return New With { _
                    .Email = My.Settings.TwitterEmail, _
                    .Password = My.Settings.TwitterPassword, _
                    .Username = My.Settings.TwitterUsername _
                        }
    End Function

The use of this is very simple, although I would like an option other than to return “Object” so Visual Studio knows that it is an anonymous type.

            Dim TwiterCredentials = View.GetTwiterCredentials
            Dim result As String = ""
            result = Twitter.TwitterAPI.UpdateStatus( _
                                    status, _
                                    TwiterCredentials.Email, _
                                    TwiterCredentials.Password _
                                    )

There is no intellisense with this, so you have to know what the options are. Hopefully in future versions this will be rectified.

Technorati Tags: .NET

Comments
Subscribe

What to read next

Article

My first Extension method

Explains how to create and use extension methods in VB.NET, with an example for enhancing the XboxInfo class to display and track Xbox Live …

Read article
Article

Where am I?

Describes a .NET application that tracks users’ locations via IP, updates Active Directory, and uses LINQ for database queries, aiding …

Read article
Article

My.Unity.Resolve(Of Ninja)

Shows how to create a shared UnityContainer singleton in VB.NET using the “My” namespace, enabling dependency injection across WPF and …

Read article