2012-03-21 87 views
0

我在VB.Net的通用函數。我也有兩個類叫做AB。是否有可能讓我的函數的一般限制,允許類型設置爲類AB?類AB不共享除對象外的任何基類。通用的約束,允許類型爲2個不同類別

+6

聽起來不是很通用的,爲什麼不聲明重載方法。 – Jodrell 2012-03-21 17:57:22

回答

6

那是不可能的。我建議你用兩個類的通用API創建一個接口,並使這兩個類都實現該接口。

+0

從代碼重用優選的,面向對象的透視 – Jodrell 2012-03-21 18:13:10

0

雖然我最近重點學習Java的我發現,正是這一點是可能的。在聲明通用參數時,可以使用「&」運算符組合多個通用約束。它看起來如下:

public class List<T extends IInterface1 & IInterface2> { 
... 
} 

我對這個問題首先想到的是我希望在.NET中使用這個:-)

+0

.NET和C#也支持多個約束。但是你不能對x或y進行排序,只有x和y。例如。 '空隙FOO ()其中,T:IEnumerable的,新的()'要求噸至是可枚舉類型並具有一個默認的構造。但是沒有辦法說它必須是可枚舉的或者有一個默認的構造函數。可惜,因爲在幾種情況下它確實非常方便。 – 2015-08-19 06:13:56