Sto provando a creare questo metodo generico per semplificare le cose ma penso di averlo incasinato! Puoi aiutare con il mio problema?Generico con più classi
Questo compila:
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;
}
Mentre questo non compila:
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);
}
messaggio: il tipo fornitore non può essere utilizzato come parametro di tipo T1 nel tipo generico o metodo ConcatenateText (MyEntity myEntity). Non esiste alcuna conversione implicita del riferimento dal Fornitore al Dipendente
Questo può essere fatto? Che cosa sto facendo di sbagliato? Può essere migliorato?
EDIT:
E MyEntity è solo un altro di classe al fine di elaborare all'interno di questo metodo generico! Non è legato ai tipi T. È solo un argomento. Ma è chiaro che non posso farlo, usando 2 tipi come questo. Ho pensato di poter assegnare uno o l'altro e il CLR indipendentemente dalla mia inizializzazione potrebbe reagire come volevo. Accetterò la risposta che condividerà un po 'più di informazioni a riguardo.
oops, mentre stavo scrivendo la mia risposta un altro due apparvero e dicendo quasi la stessa –
Grande risposta, ma se mi ricordavo correttamente non posso sovraccaricare più classi in una classe. Quindi Interface e generico sono una buona alternativa in questo esempio. –
@ TarıkÖzgünGüner Non mescolare sovraccarico e override. –