2012-09-06 35 views
1

我正在重新設計一個MVC3應用程序,將所有linq從控制器中取出並放入適當的圖層中。服務沒有實現接口成員noobie

我有這個作爲我的結構SQL - > EF - >存儲庫 - >服務 - >控制器。我正在使用接口。

編譯時我收到此錯誤:

gpc.data.service.roleService不實現接口成員gpc.data.interfaces.iroleservice.HolderNamesbyRoleID(INT)。

我是完全新的適當的建築如此道歉,如果這是盲目明顯的大聲笑。下面是一些代碼:

庫:

namespace gpc.Data.Repositories 
{ 
public class roleRepository :gpc.Data.Interfaces.IRoleRepository 
{ 
private gpc.Models.gpcEntities _entities = new Models.gpcEntities(); 


public HolderNames HolderNamesbyRoleID(int roleid) 
{ 
return (from i in _entities.HolderNames 
where i.roleid == roleid select i).FirstOrDefault();    
} 
} 
} 

然後我有一個接口:

namespace gpc.Data.Interfaces 
{ 
public interface IRoleRepository 
{ 
HolderNames HolderNamesbyRoleID(int roleid); 
} 
} 

然後,我有服務:

namespace gpc.Data.Service 
{ 
public class roleService : gpc.Data.Interfaces.IRoleService 
{ 
    private ModelStateDictionary _modelState; 
    private gpc.Data.Interfaces.IRoleRepository _repository; 

    public roleService(ModelStateDictionary modelState) 
    { 
     _modelState = modelState; 
     _repository = new gpc.Data.Repositories.roleRepository(); 
    } 
    public roleService(ModelStateDictionary modelState,          
    gpc.Data.Repositories.roleRepository repository) 
    { 
     _modelState = modelState; 
     _repository = repository; 
    } 


    public HolderNames HolderNames(int roleid) 
    { 
     return _repository.HolderNamesbyRoleID(roleid); 
    } 
} 
} 

我再有另一個接口:

namespace gpc.Data.Interfaces 
{ 
public interface IRoleService 
{ 
    HolderNames HolderNamesbyRoleID(int roleid); 
} 
} 

我在這個結構中創建了一個非常簡單的ienumerable,並且我能夠通過控制器獲取數據到我期望的視圖。我想這是一個更復雜的選擇一切,並把它放在一個視圖,我一定錯過了一些東西。我不知道它是否有所作爲,但「holdernames」是SQL視圖,而不是表格。

任何幫助,不勝感激

回答

0

它基本上只是你的編譯器錯誤顯示。您的IRoleService接口定義了一個名爲HolderNamesbyRoleID的方法,但在您的實現中,只有一個名爲HolderNames的方法。

我認爲這只是您輸入的錯誤。

+0

啊快照..我完全沒有發現,哈哈。謝謝!!! – bruceiow

+0

不用擔心,我去過很多次:) – Josh

0

接口只包含簽名。你必須在你已經實現你的接口的類中編寫實際的實現。在你的情況下,你已經定義了方法HolderNamesbyRoleID in IRoleRepository但你還沒有在roleService class中實現此方法。您必須實施HolderNames由角色ID角色服務類。

您的roleService類的代碼變成下圖所示。

namespace gpc.Data.Service 
{ 
public class roleService : gpc.Data.Interfaces.IRoleService 
{ 
    private ModelStateDictionary _modelState; 
    private gpc.Data.Interfaces.IRoleRepository _repository; 

    public roleService(ModelStateDictionary modelState) 
    { 
     _modelState = modelState; 
     _repository = new gpc.Data.Repositories.roleRepository(); 
    } 
    public roleService(ModelStateDictionary modelState,          
    gpc.Data.Repositories.roleRepository repository) 
    { 
     _modelState = modelState; 
     _repository = repository; 
    } 


    public HolderNames HolderNamesbyRoleID(int roleid) 
    { 
     return _repository.HolderNamesbyRoleID(roleid); 
    } 
} 
} 

有關更多信息,請參閱interface

相關問題