Generic list and powershell

I met with an accident recently riding my motorcycle and hence was unable to blog for some time. Here is my post after a brief break.


I wanted to create a generic list of my class in power shell. It was an interesting experience. Here is what I found.


When I tried to create a generic list of say type int it was straight forward … well sort of … the syntax was awkward, but still worked.


$list = New-Object “System.Collections.Generic.List“1[System.Int32]”




I wrote a sample assembly as below:

using System;

public class Sample


    public Sample() {}

    public void SampleMethod() { Console.WriteLine(“Hello”);}




Compiled this to sample.dll as csc /target:library sample.cs




Make sure if the assembly is loaded




Now add the class Sample to the list. It gave me the error below.


$list = New-Object “System.Collections.Generic.List“1[Sample]”

New-Object : Cannot find type [System.Collections.Generic.List`1[Test]]: make sure the assembly containing this type is loaded.

At line:1 char:19 + $list = New-Object  <<<< “System.Collections.Generic.List“1[Test]”


I am not sure why this is not working as the syntax is very similar to the one I had above for Int32. After some search and experimenting I figured out another way to get the generic list working.


$si = new-object Sample

$st = [Type] $si.GetType()

$base = [System.Collections.Generic.List“1]

$qt = $base.MakeGenericType(@($st))

$so = [Activator]::CreateInstance($qt)


write-host $so






Comments (2)

  1. Alex O. says:

    Man, hope you’re OK. I am also riding a bike and other people simply don’t see us on the road.

    Nice post, will bookmark it for future reference.

  2. Very good post, simple and effective !!