Vediamo se ho capito...
Tu devi passare come argomento ad una classe il tipo di una classe (quindi la classe stessa), non un'istanza della classe.
Quindi risultano molto utili i generici (mai sentito parlare?
)
La tua LibraryClass la definisci generica in questo modo:
class LibraryClass<T> where T : new()
{
}
<T> sta ad indicare che la classe è generica. "where T : new()" indica che T deve possedere un costruttore che non richiede parametri (indispensabile per potere inizializzarne una variabile).
Adesso nella tua classe chiamante, quando dichiari una variabile di tipo LibraryClass devi passare anche il tipo al quale associare il generico, nel tuo caso myclass:
LibraryClass<myclass> libClass = new LibraryClass<myclass>();
In questa istanza di LibraryClass, il tipo generico T si comporterà esattamente come myclass.
É possibile definire altri vincoli per il tipo generico, come l'obbligo di derivare da una classe o da un'interfaccia, separandoli fra loro con delle virgole:
...<T> where T : Form, IComparable, ...
Luca