In Visual Basic.net, can I create an Object, or a List of T with the type from another object.
Here is some code:
Dim TestObjectType As Author
Dim TestObject As TestObjectType.GetType
I am getting an error:
TestObjectType.GetType is not defined
EDIT
Can I create a Type object of a certain type, and then create objects, lists or cast objects to this type from this Type object?
Dim TestObject As TestObjectType.GetType
will look for a type named GetType
in the namespace TestObjectType
.
To create an instance of a class using System.Type
, you can use Activator.CreateInstance
:
Dim TestObject = Activator.CreateInstance(TestObjectType.GetType())
To create a generic list, you can use Type.MakeGenericType
:
Dim listType = GetType(List(Of )).MakeGenericType(TestObjectType.GetType())
Dim list = Activator.CreateInstance(listType)
Note that both snippets above return an Object
; however, you can make use of generics to achieve compile time safety:
Dim TestObject = CreateNew(TestObjectType)
Dim AuthorList = CreateNewList(TestObjectType)
...
Function CreateNew(Of T As New)(obj As T) As T
Return New T()
End Function
Function CreateNewList(Of T)(obj As T) As List(Of T)
Return New List(Of T)
End Function
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With