Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create an object from another objects type

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?

like image 817
Simon Avatar asked Oct 15 '25 07:10

Simon


1 Answers

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
like image 147
sloth Avatar answered Oct 17 '25 21:10

sloth



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!