2012-07-16 98 views
7

不可能(除了使用不同的名稱)有幾個具有相同名稱但實現不同接口的通用方法嗎?兩個具有相同名稱的通用方法

public IList<T> List<T>() where T : class, IMyInterface1 
{ 

    return mylist 
} 

public IList<T> List<T>() where T : class, IMyInterface2 
{ 

    return mylist 
} 

感謝,

回答

10

不,你不能僅僅通過泛型類型constaints超載。您可以通過號碼來重載類型參數,但不會受其約束。

如果你是實現一個接口,你可以使用顯式接口實現 - 否則我會建議使用不同的名稱。無論如何,我經常發現使用不同的名字會使事情變得更加清晰,說實話。

記住,你給出的例子介紹了天然歧義反正 - 你會希望被稱爲如果類型參數實現接口?

相關問題