首先,对于这个问题的引用不正确,我深表歉意。

我正在开发一个三层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()类调用DATownTown.svc.cs方法。

我搜索了其他类似的查询;大多说其中一种方法中有正确的参数。我认为我的代码并非如此。

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

提前致谢。

最佳答案

在您的Town类中,您有一个IEnumerable<Common.Town>,并且在界面中您只是得到了IEnumerable<Town>,但是在您的错误中,它表明该界面正在使用Business.Town而不是Common.Town。问题是这些彼此之间并不相同。

如果更改接口,以使IEnumerable也是Common.Town,则应该没问题。

关于c# - 未在服务中实现接口(interface)成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22763215/

10-13 03:23