2010-10-15 89 views
0

我有一個抽象類正在實現3個接口。接口強制抽象類實現其功能

public abstract class ServiceBaseCore<Entity, EntityKey> : MarshalByRefObject, IComponentService, IEntityProvider<Entity, EntityKey> 
    where Entity : IEntityId<EntityKey>, new() 
    where EntityKey : IEntityKey, new() 
{ 
// Provided functionality/body to some methods of interface 
} 

問題:我收到到界面,在這裏爲我所讀的是「如果一個類是抽象的功能錯誤,我的抽象類是不提供的實現(定義/體)比沒有必要爲其實施的接口的所有/任何功能提供實體「。

注意:代碼是由codeSmith生成的,即使它顯示錯誤。

請告訴我我錯在哪裏,我缺少什麼。

謝謝

+0

只需標記你的抽象類中的抽象接口方法。 – 2010-10-15 05:14:01

回答

7

只需創建一些抽象的函數,編譯器將停止抱怨:

public abstract void MyMethodDeclaredInTheInterface(); 

編輯:爲了加快這一進程,只是繼續前進接口名稱插入符號在你的抽象類,然後按Ctrl +。並選擇「Implement interface YourInterface」。 然後通過NotImplementedException進行一些搜索和替換就可以了。

+0

有大約244個這樣的功能(顯示我的錯誤)plez給我任何想法,以便我可以使其快速 – 2010-10-15 05:21:05

+1

我已經更新了我的答案相應 – 2010-10-15 05:27:53

+1

@Rajesh Rolen:如果你有244個函數在一個單一類型,也許你應該考慮將其分成多種類型。請參閱SRP http://en.wikipedia.org/wiki/Single_responsibility_principle – 2010-10-15 05:29:53

1

爲接口創建抽象方法。否則,即使派生類可能(派生版本不能通過vtables訪問基類,因此不能滿足接口契約),類實際上並不一定以任何方式實現這些方法。這會違反接口背後的想法。

注意:這很晚了,我很累,所以我可能會錯誤地說明理由。但是爲接口所需的方法添加抽象方法將會解決這個問題。

0

您應該能夠右鍵單擊接口名稱(接近MyClass : IMyInterface)以查看上下文菜單,然後選擇「實現接口」。 Visual Studio將創建所有必需的方法和屬性來使接口飽和。

0

您可以嘗試一些IDE以節省大部分時間。我確切地知道,Eclipse可以自動執行此操作。