我想創建這個通用的方法來簡化的東西,但我想我搞砸了!你能幫我解決問題嗎?通用與多個類
這將編譯:
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;
}
雖然這並不編譯:
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);
}
消息:該類型供應商不能用作在通用類型或方法ConcatenateText類型參數T1(myEntity所myEntity所)。沒有從供應商到員工的隱含參考轉換
可以這樣做嗎?我究竟做錯了什麼?可以改進嗎?
編輯:
而且myEntity所是另一個類,以處理它這個泛型方法裏面!它與類型T無關。它只是一個參數。但很明顯,我不能這樣做,使用2種類型。我認爲我可以分配一個或另一個,獨立於我的初始化的CLR可以按我的意願做出反應。我會接受那些分享更多關於它的信息的答案。
哎呀,當我在寫我的回答另外兩個出現,並說幾乎相同 –
偉大的答案,但如果我沒記錯,你不能在一個類重載多類。所以在這個例子中Interface和generic是一個很好的選擇。 –
@TarıkÖzgünGüner不要混淆過載和覆蓋。 –