wcf服务中没能实现接口成员,求教,谢谢!

时间:2020-12-27 13:21:57
错误提示为:“PestInfoService”不实现接口成员“IPestInfoService.GetImagoSurveys()”。“PestInfoService.GetImagoSurveys()”无法实现“IPestInfoService.GetImagoSurveys()”,因为它没有匹配的返回类型“System.Collections.Generic.List<ImagoSurvey>”。

相信代码为:
public class PestInfoService : IPestInfoService
{
  public void DoWork()
  {
  }




  #region  

      PestInfoDataContext PestDataContext = new PestInfoDataContext();
      public class ImagoSurvey
      {
        public int imagoSurveyID { get; set; }
        public decimal Longitude { get; set; }
        public decimal Latitude { get; set; }
        public int totalWaspNum { get; set; }
      }


      public  List<ImagoSurvey> GetImagoSurveys()
      {
        PestInfoDataContext PestDataContext = new PestInfoDataContext();
        var imagoData = from m in PestDataContext.ImagoSurvey
                        join n in PestDataContext.MonitoringPoint on m.MonitoringPointID equals n.MonitoringPointID
                       
                        select new ImagoSurvey
                        {

                         Longitude= n.Longitude,
                         Latitude= n.Latitude,
                         totalWaspNum=  m.TotalWaspNum


                        };



        return imagoData.ToList();

      }

      #endregion
}
谢谢大家能给我指点一下!

7 个解决方案

#1


PestInfoService实现的GetImagoSurveys和 IPestInfoService中如何定义的GetImagoSurveys返回值不同。

#2


ImagoSurvey怎么定义在PestInfoService里了。

#3


我也觉得你定义了多个ImagoSurvey,把PestInfoService 内的ImagoSurvey删掉试一试。

下面的代码在我这里没有编译错误。

接口

namespace WcfService1
{
    public class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Longitude { get; set; }
        public decimal Latitude { get; set; }
        public int totalWaspNum { get; set; }
    }

    // NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in Web.config.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        void DoWork();
        [OperationContract]

        List<ImagoSurvey> GetImagoSurveys();        
    }
}


实现:

namespace WcfService1
{   
    public class Service1 : IService1
    {
        public void DoWork()
        {
        }

        public List<ImagoSurvey> GetImagoSurveys()
        {
            return new List<ImagoSurvey>(){new ImagoSurvey(), new ImagoSurvey()};
        }
    }
}

#4


灰常感谢!我按照你的代码,重新生成了一遍,出现了这个错误:类型“ImagoSurvey”的声明上缺少 partial 修饰符;存在此类型的其他分部声明,改为如下代码就编译通过了,
partial class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Longitude { get; set; }
        public decimal Latitude { get; set; }
        public int totalWaspNum { get; set; }
    }

,ImagoSurvey这变成局部类,到时候对数据库的访问时,会不会遇到其他的问题(ImagoSurvey
是数据库中一张表映射的实体类)。

#5


引用 4 楼 dundun0212 的回复:
灰常感谢!我按照你的代码,重新生成了一遍,出现了这个错误:类型“ImagoSurvey”的声明上缺少 partial 修饰符;存在此类型的其他分部声明,改为如下代码就编译通过了,
partial class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Lon……


我觉得你还是删除ImagoSurvey好一点,看起来你使用的EntityFramework已经生成这个类了。

#6



1:这是一个文件
[ServiceContract]
    interface IPestInfoService
    {
        [OperationContract]
        List<ImagoSurvey> GetImagoSurveys();
    }
    
    
    public class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Longitude { get; set; }
        public decimal Latitude { get; set; }
        public int totalWaspNum { get; set; }
    }


2:这个实现部分,也是一个文件
class PestInfoService :IPestInfoService
    {
        public List<ImagoSurvey> GetImagoSurveys()
        {
            PestInfoDataContext PestDataContext = new PestInfoDataContext();
            var imagoData = from m in PestDataContext.ImagoSurvey
                            join n in PestDataContext.MonitoringPoint on m.MonitoringPointID equals n.MonitoringPointID

                            select new ImagoSurvey
                            {
                                Longitude = n.Longitude,
                                Latitude = n.Latitude,
                                totalWaspNum = m.TotalWaspNum
                            };

        }

#7


可能参数不对呀,建议跟踪测试一下吧

#1


PestInfoService实现的GetImagoSurveys和 IPestInfoService中如何定义的GetImagoSurveys返回值不同。

#2


ImagoSurvey怎么定义在PestInfoService里了。

#3


我也觉得你定义了多个ImagoSurvey,把PestInfoService 内的ImagoSurvey删掉试一试。

下面的代码在我这里没有编译错误。

接口

namespace WcfService1
{
    public class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Longitude { get; set; }
        public decimal Latitude { get; set; }
        public int totalWaspNum { get; set; }
    }

    // NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in Web.config.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        void DoWork();
        [OperationContract]

        List<ImagoSurvey> GetImagoSurveys();        
    }
}


实现:

namespace WcfService1
{   
    public class Service1 : IService1
    {
        public void DoWork()
        {
        }

        public List<ImagoSurvey> GetImagoSurveys()
        {
            return new List<ImagoSurvey>(){new ImagoSurvey(), new ImagoSurvey()};
        }
    }
}

#4


灰常感谢!我按照你的代码,重新生成了一遍,出现了这个错误:类型“ImagoSurvey”的声明上缺少 partial 修饰符;存在此类型的其他分部声明,改为如下代码就编译通过了,
partial class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Longitude { get; set; }
        public decimal Latitude { get; set; }
        public int totalWaspNum { get; set; }
    }

,ImagoSurvey这变成局部类,到时候对数据库的访问时,会不会遇到其他的问题(ImagoSurvey
是数据库中一张表映射的实体类)。

#5


引用 4 楼 dundun0212 的回复:
灰常感谢!我按照你的代码,重新生成了一遍,出现了这个错误:类型“ImagoSurvey”的声明上缺少 partial 修饰符;存在此类型的其他分部声明,改为如下代码就编译通过了,
partial class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Lon……


我觉得你还是删除ImagoSurvey好一点,看起来你使用的EntityFramework已经生成这个类了。

#6



1:这是一个文件
[ServiceContract]
    interface IPestInfoService
    {
        [OperationContract]
        List<ImagoSurvey> GetImagoSurveys();
    }
    
    
    public class ImagoSurvey
    {
        public int imagoSurveyID { get; set; }
        public decimal Longitude { get; set; }
        public decimal Latitude { get; set; }
        public int totalWaspNum { get; set; }
    }


2:这个实现部分,也是一个文件
class PestInfoService :IPestInfoService
    {
        public List<ImagoSurvey> GetImagoSurveys()
        {
            PestInfoDataContext PestDataContext = new PestInfoDataContext();
            var imagoData = from m in PestDataContext.ImagoSurvey
                            join n in PestDataContext.MonitoringPoint on m.MonitoringPointID equals n.MonitoringPointID

                            select new ImagoSurvey
                            {
                                Longitude = n.Longitude,
                                Latitude = n.Latitude,
                                totalWaspNum = m.TotalWaspNum
                            };

        }

#7


可能参数不对呀,建议跟踪测试一下吧