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 is 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
No comments:
Post a Comment