I found a requirement recently where I needed to Instantiate a new instance of a Generic Type.

Ordinarily we would declare a new instance of a class using a Generic Type using something like;

Public Class ViewModel_Class(Of T)

However, If we then try to create a new Object of Type T by performing the following…

Dim MyNewObject As New T

…an error will be produced, reporting “New cannot be used on a type parameter that does not have a new constraint”.

This error is telling us that the Compiler doesn’t know if the Generic Type has an implicit “New” Sub, which it can use to Instantiate a new Object.

So, we need to add a Generic Type Constraint for a New Sub by specifying this when we declare our Generic Type;

Public Class ViewModel_Class(Of T as {New})

This tells the compiler that whatever Type T is, it will have a New Sub which it can use to instantiate the New Object.

You can read more on this subject on the Microsoft Website at;

http://msdn.microsoft.com/en-us/library/w256ka79(v=vs.110).aspx

By |2017-07-24T08:33:18+01:00January 7th, 2013|.Net Framework, VB.net|0 Comments

About the Author:

Leave A Comment