未在服务中实现接口成员

时间:2014-03-31 13:45:03

标签: c# asp.net-mvc-3 wcf

首先,如果对此问题的引用不正确,我会道歉。

我正在开发一个三层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();
    }
}

基本上我正在做的是从GetAllTowns()类调用DATown Town.svc.cs方法。

我已经四处寻找其他类似的查询;大多数人都说其中一种方法中存在正确的参数。我不认为我的代码就是这种情况。

如果有人能帮助我找出问题所在,我将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:5)

在您的Town课程中,您有一个IEnumerable<Common.Town>,并且在界面中您只是IEnumerable<Town>,但在您的错误中显示该界面正在使用Business.Town而不是Common.Town。问题是这些彼此并不相同。

如果你改变你的界面,所以IEnumerable也是Common.Town,你应该没问题。

答案 1 :(得分:4)

从我看到的,你有一个不正确的返回类型 - 你的城镇在商店是Bussiness.Town,而在服务类你返回Common.Town。尝试在svc中返回Bussiness.Town