對不起,有關奇怪的標題。我真的不知道如何表達它更好...不能從泛型基類和具有通用約束的相同類型的特定接口繼承
我在下面的代碼片段中遇到錯誤。我到處都使用Dummy類。編譯器是否理解我在DummyImplBase上添加的約束?如果我直接使用Dummy而不是將其設置爲約束,這是否是一個編譯器錯誤?
錯誤1'ConsoleApplication53.DummyImplBase'沒有實現接口成員'ConsoleApplication53.IRequired.RequiredMethod()'。 'ConsoleApplication53.RequiredBase.RequiredMethod()'不能實現'ConsoleApplication53.IRequired.RequiredMethod()',因爲它沒有匹配的'ConsoleApplication53.Dummy'返回類型。 C:\ Documents和Settings \泗門\我的文檔\ Visual Studio 2008的\項目\ ConsoleApplication53 \ ConsoleApplication53 \的Program.cs 37 27 ConsoleApplication53
public class Dummy
{
}
public interface IRequired<T>
{
T RequiredMethod();
}
public interface IDummyRequired : IRequired<Dummy>
{
void OtherMethod();
}
public class RequiredBase<T> : IRequired<T>
{
public T RequiredMethod()
{
return default(T);
}
}
public abstract class DummyImplBase<T> : RequiredBase<T>, IDummyRequired
where T: Dummy
{
public void OtherMethod()
{
}
}
這似乎更像是一個繁瑣的黑客隱藏原有的方法,仍然..這並沒有給我的泛型的優勢。然後,我必須在派生類中執行此操作,以獲得相同的結果。 – simendsjo 2010-06-15 10:11:50
看到我的編輯,如果使用C#4.0是一個選項。 – Henrik 2010-06-15 10:37:47
使用3.5仍然 – simendsjo 2010-06-15 10:44:03