C # crear Objeto obj = new T ()?

Tengo una superclase a la que podemos llamarclass A y algunas subclases, por ej.class a1 : A, class a2 : A, ... ya6 : A. En miclass B, Tengo un conjunto de métodos que crea y agrega una de las subclases a unList<A>enB.

Quiero acortar mi código que tengo en este momento. Así que en lugar de escribir

Adda1()
{
    aList.Add( new a1() );
}

Adda2()
{
    aList.Add( new a2() );
} 

...

Adda6()
{
    aList.Add( new a6() );
}

En su lugar quiero escribir algo similar a esto

Add<T>()
{
    aList.Add( new T() );  // This gives an error saying there is no class T.
}

¿Es eso posible?

¿También es posible restringir queT tiene que ser de tipoA o una de sus subclases?

Respuestas a la pregunta(2)

Su respuesta a la pregunta