How to create an instance of a .NET Generic class in Dyalog?
Forum rules
The FAQ is a read-only forum which is in general updated only by employees of Dyalog Ltd. It replaces the FAQ page which existed under http://www.dyalog.com. Rather than rejecting other posts to this forum, such posts will be put in a moderation queue, and moved to a more appropriate forum.
The FAQ is a read-only forum which is in general updated only by employees of Dyalog Ltd. It replaces the FAQ page which existed under http://www.dyalog.com. Rather than rejecting other posts to this forum, such posts will be put in a moderation queue, and moved to a more appropriate forum.
1 post
• Page 1 of 1
How to create an instance of a .NET Generic class in Dyalog?
How do I access this System.Collections.Generic.List`1 class?
It is a “generic” (i.e its full name is List<T>), which means that you need to provide a Type (i.e. a class) for “T”.
We do not have a syntax to do that. So, it is not possible to create one directly from Dyalog.
Having said that, you can use. Type.MakeGenericType (https://msdn.microsoft.com/en-us/library/system.type.makegenerictype(v=vs.110).aspx) to create a Type, and then use Activator.CreateInstance (https://msdn.microsoft.com/en-us/library/wcxyzt4d(v=vs.110).aspx) to create an instance of it.
So, the following code is an example of that, which works in .NET Framework 4
It is a “generic” (i.e its full name is List<T>), which means that you need to provide a Type (i.e. a class) for “T”.
We do not have a syntax to do that. So, it is not possible to create one directly from Dyalog.
Having said that, you can use. Type.MakeGenericType (https://msdn.microsoft.com/en-us/library/system.type.makegenerictype(v=vs.110).aspx) to create a Type, and then use Activator.CreateInstance (https://msdn.microsoft.com/en-us/library/wcxyzt4d(v=vs.110).aspx) to create an instance of it.
So, the following code is an example of that, which works in .NET Framework 4
- Code: Select all
⎕USING←'' 'System' 'System,System.dll' 'System.Text' 'System.Type'
bytearr←System.Array.CreateInstance(System.Type.GetType⊂'System.Byte')20
listcoltype←Type.GetType⊂'System.Collections.Generic.List`1'
lobj←listcoltype.MakeGenericType(⊂,Type.GetType⊂'System.Byte')
listcol1←Activator.CreateInstance lobj(,⊂bytearr)
- Vince|Dyalog
- Posts: 432
- Joined: Wed Oct 01, 2008 9:39 am
1 post
• Page 1 of 1
Return to Frequently Asked Questions (FAQ)
Who is online
Users browsing this forum: No registered users and 1 guest
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group