Is it possible to create a list of constructors in c# that will create random objects?
<p>I have several classes that all inherit from the same <code>Shape</code> class. When I create a new shape I want it to be of a random shape. The way that I thought to do it is to create a list that will hold links to all the constructors, and when I need to create a new shape I'll get a random constructor from the list and use it to construct my shape. I've tried to create the list in the fallowing way, but I get errors:</p>

<pre><code>List&lt;Action&gt; constList = new List&lt;Action&gt;();
constList.Add(SShape());
constList.Add(OShape());
constList.Add(LShape());
</code></pre>

<p>The <code>Shape</code> constructor is defined as:</p>

<pre><code>class Shape
{
    public Shape(PlayGrid grid, Color color)
    {
        ...
    }
    ...
}
</code></pre>

<p>And each sub shape's constructor is defined like:</p>

<pre><code>class IShape : Shape
{
    public IShape(PlayGrid grid, Color color) : base(grid, color)
    {
    ...
    }
...
}
</code></pre>

<p>What is the correct way to construct the list, and what is the way to use the constructors from the list?</p>

<p>The contractors also need to get parameters that change between different shapes.</p>
