Generisch mit mehreren Klassen

Ich versuche, diese generische Methode zu erstellen, um die Dinge zu vereinfachen, aber ich glaube, ich habe es durcheinander gebracht! Können Sie mir bei meinem Problem helfen?

Dies kompiliert:

private string ConcatenateText<T1, T2>(MyEntity myEntity) 
    where T1 : Supplier, new()
    where T1 : Employee, new()
    where T2 : SupplierDepartment, new()
    where T2 : EmployeeDepartment, new()
{
    T1 p = new T1();
    T2 r = new T2();
    //Code here for myEntity treatment
    return mystring;
}

Dies kompiliert zwar nicht:

protected void mybutton1_Click(object sender, EventArgs e)
{
   string mystring = ConcatenaText<Supplier, SupplierDepartment>(myEntity);
}

//This does not compile
protected void mybutton2_Click(object sender, EventArgs e)
{
   string mystring = ConcatenaText<Employee, EmployeeDepartment>(myEntity);
}

Nachricht: Der Typ Supplier kann nicht als Typparameter T1 im generischen Typ oder in der generischen Methode ConcatenateText (MyEntity myEntity) verwendet werden. Es gibt keine implizite Referenzkonvertierung von Lieferant zu Mitarbeiter

Kann das gemacht werden? Was mache ich falsch? Kann es verbessert werden?

BEARBEITEN:

Und MyEntity ist nur eine weitere Klasse, um sie innerhalb dieser generischen Methode zu verarbeiten! Es hat nichts mit den Typen T zu tun. Es ist nur ein Argument. Aber es ist klar, dass ich das nicht kann, wenn ich 2 Typen wie diesen benutze. Ich dachte, ich könnte den einen oder anderen zuweisen und die CLR könnte unabhängig von meiner Initialisierung so reagieren, wie ich wollte. Ich werde die Antwort akzeptieren, die ein bisschen mehr Informationen darüber teilt.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage