我試圖做這樣的事情:實現多個通用接口 - 錯誤類型
public interface IRepository<T>
{
T Get<T>(int id);
}
public interface IFooBarRepository : IRepository<Foo>, IRepository<Bar>
{
}
IFooBarRepository repo = SomeMethodThatGetsTheActualClass();
Foo foo = repo.Get<Foo>(1);
我得到一個警告:
類型參數「T」具有相同的名稱作爲類型從外類型 'IRepository'
和誤差參數:
呼叫是下列方法或屬性之間曖昧: 'IRepository.Get(INT)' 和 'IRepository.Get(INT)'
有關如何使此模式有效的任何想法?
阿哈...這個工程。雖然我不明白爲什麼它不能像我最初寫的那樣工作......啓發我們,哦,Skeety一個! :) – Jonas 2010-09-23 20:12:12
好的,但顯式實現呢? – 2010-09-23 20:13:27
@Jonas:你不是試圖調用一個實際的泛型方法(即引入一個新的類型參數),所以你不能指定一個類型參數。相反,您試圖使用表達式作爲特定泛型類型的實現......並且*這是* cast/extra變量的作用。 (編輯:事實上,你已經聲明瞭Get方法,它*是*通用的 - 但它不應該是這樣的。) – 2010-09-23 20:13:32