2014-03-31 54 views
2

首先,如果對此問題的引用不正確,我表示歉意。未實現服務中的接口成員

我正在開發一個三層MVC 3應用程序。在業務層,我需要創建一個將調用數據訪問層的服務,以檢索現有城鎮的列表。

我的ITown界面如下;

[ServiceContract] 
public interface ITown 
{ 
    [OperationContract] 
    IEnumerable<Town> GetAllTowns(); 
} 

Town.svc.cs,我插入如下;

public class Town : ITown 
{ 
    public IEnumerable<Common.Town> GetAllTowns() 
    { 
     return new DATown().GetAllTowns(); 
    } 
} 

問題出在上面的代碼中。我在Town的類聲明public class Town : ITown中收到錯誤。

'Business.Town' does not implement interface member 'Business.ITown.GetAllTowns()'. 
'Business.Town.GetAllTowns()' cannot implement 'Business.ITown.GetAllTowns()' 
because it does not have the matching return type of 'System.Collections.Generic.IEnumerable<Business.Town>'. 

這是我的DATown;

public class DATown : Connection 
{ 
    //Constructor 
    public DATown() 
     :base() 
    { } 

    public IEnumerable<Town> GetAllTowns() 
    { 
     return entities.Town.AsEnumerable(); 
    } 
} 

所以基本上我在做什麼是調用從Town.svc.cs類的DATownGetAllTowns()方法。

我搜索了其他類似的查詢;主要是說在其中一種方法中有一個正確的參數。我不認爲這是我的代碼的情況。

如果有人能幫我弄清楚什麼是錯的,我將不勝感激。

在此先感謝。

回答

5

在你的城市類,你有一個IEnumerable<Common.Town>和接口你簡直是IEnumerable<Town>,但在你的錯誤則說明該接口是使用Business.Town而不是Common.Town。問題是這些不是彼此相同。

如果你改變你的接口,所以IEnumerable也是Common.Town,你應該沒問題。

+0

非常感謝:)解決了這個問題。 – ClaireG

4

從我看到,你有一個不正確的返回類型 - 你在ITown鎮Bussiness.Town,而在服務類返回Common.Town。嘗試在svc中返回Bussiness.Town

相關問題