<p>This isn't legal:</p>

<pre><code>public class MyBaseClass
{
  public MyBaseClass() {}
  public MyBaseClass(object arg) {}
}


public void ThisIsANoNo&lt;T&gt;() where T : MyBaseClass
{
  T foo = new T("whoops!");
}
</code></pre>

<p>In order to do this, you have to do some reflection on the type object for T or you have to use Activator.CreateInstance.  Both are pretty nasty.  Is there a better way?</p>

```
```
where T : MyBaseClass, new()
```
```
only works w/ parameterless public constructor. beyond that, back to activator.CreateInstance (which really isn't THAT bad).