2013-08-17 171 views
3

嗨,我有以下的代码,但我不断收到错误:不实现接口成员

“JsonWcfService.GetVenues”不实现接口成员“GetVenuesByLocation(字符串搜索)”。

我对C和.Net相当陌生,因此大多数情况下都是通过剪切和粘贴来实现的。

您的帮助将不胜感激。

IGetVenues.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.Text; 
using System.ServiceModel.Web; 

namespace JsonWcfService 
{ 
    [ServiceContract] 
    public interface IGetVenues 
    { 
     [OperationContract] 
     //attribute for returning JSON format 
     [WebInvoke(Method = "GET", 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "json/Venues/search={search}")] 
     //method 
     List<Venue> GetAllVenuesMethod(string search); 

     [OperationContract] 
     [WebInvoke(Method = "GET", 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "json/Venues/location={search}")] 
     List<Venueloc> GetVenuesByLocation(string search); 
    } 
} 

GetVenues.svc.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.Text; 
using System.Data.SqlClient; 
namespace JsonWcfService 
{ 
    public class GetVenues : IGetVenues 
    { 
     public List<Venue> GetAllVenuesMethod(string search) 
     { 
      List<Venue> mylist = new List<Venue>(); 

      using (SqlConnection conn = new SqlConnection("server=*****;database=******;Trusted_Connection=True;")) 
      { 
       conn.Open(); 
       string cmdStr = String.Format("Select id,name,address1,town,postcode,lon,lat from venuesearch WHERE searchterm like @searchterm"); 
       SqlCommand cmd = new SqlCommand(cmdStr, conn); 
       cmd.Parameters.Add(new SqlParameter("searchterm", "%" + Convert.ToString(search) + "%")); 
       SqlDataReader rd = cmd.ExecuteReader(); 
       if (rd.HasRows) 
       { 
        while (rd.Read()) 
         mylist.Add(new Venue(
          rd.GetInt32(0), 
          //rd.GetString(1), 
          rd.IsDBNull(1) ? null : rd.GetString(1), 
          //rd.GetString(2), 
          rd.IsDBNull(2) ? null : rd.GetString(2), 
          //rd.GetString(3), 
          rd.IsDBNull(3) ? null : rd.GetString(3), 
          //rd.GetString(4) 
          rd.IsDBNull(4) ? null : rd.GetString(4), 
          //rd.GetString(4) 
          rd.IsDBNull(5) ? 0 : rd.GetDecimal(5), 
          //rd.GetString(4) 
          rd.IsDBNull(6) ? 0 : rd.GetDecimal(6) 
          )); 
       } 
       conn.Close(); 
      } 

      return mylist; 
     } 
    } 

    [DataContract] 

    public class Venue 
    { 
     [DataMember] 
     public Int32 id { get; set; } 
     [DataMember] 
     public string name { get; set; } 
     [DataMember] 
     public string address1 { get; set; } 
     [DataMember] 
     public string town { get; set; } 
     [DataMember] 
     public string postcode { get; set; } 
     [DataMember] 
     public Decimal lon { get; set; } 
     [DataMember] 
     public Decimal lat { get; set; } 
     public Venue(int venid, string venname, string venaddress1, string ventown, string venpostcode, decimal venlon, decimal venlat) 
     { 
      id = venid; 
      name = venname; 
      address1 = venaddress1; 
      town = ventown; 
      postcode = venpostcode; 
      lon = venlon; 
      lat = venlat; 

     } 

     public List<Venueloc> GetVenuesByLocation(string search) 
     { 
      List<Venueloc> mylist = new List<Venueloc>(); 

      using (SqlConnection conn = new SqlConnection("server=***;database=******;Trusted_Connection=True;")) 
      { 
       conn.Open(); 
       string cmdStr = String.Format("Select id,name,address1,town,postcode,lon,lat from venuesearch WHERE searchterm like @searchterm"); 
       SqlCommand cmd = new SqlCommand(cmdStr, conn); 
       cmd.Parameters.Add(new SqlParameter("searchterm", "%" + Convert.ToString(search) + "%")); 
       SqlDataReader rd = cmd.ExecuteReader(); 
       if (rd.HasRows) 
       { 
        while (rd.Read()) 
         mylist.Add(new Venueloc(
          rd.GetInt32(0), 
          //rd.GetString(1), 
          rd.IsDBNull(1) ? null : rd.GetString(1), 
          //rd.GetString(2), 
          rd.IsDBNull(2) ? null : rd.GetString(2), 
          //rd.GetString(3), 
          rd.IsDBNull(3) ? null : rd.GetString(3), 
          //rd.GetString(4) 
          rd.IsDBNull(4) ? null : rd.GetString(4), 
          //rd.GetString(4) 
          rd.IsDBNull(5) ? 0 : rd.GetDecimal(5), 
          //rd.GetString(4) 
          rd.IsDBNull(6) ? 0 : rd.GetDecimal(6) 
          )); 
       } 
       conn.Close(); 
      } 

      return mylist; 
     } 
    } 

    [DataContract] 

    public class Venueloc 
    { 
     [DataMember] 
     public Int32 id { get; set; } 
     [DataMember] 
     public string name { get; set; } 
     [DataMember] 
     public string address1 { get; set; } 
     [DataMember] 
     public string town { get; set; } 
     [DataMember] 
     public string postcode { get; set; } 
     [DataMember] 
     public Decimal lon { get; set; } 
     [DataMember] 
     public Decimal lat { get; set; } 
     public Venueloc(int venid, string venname, string venaddress1, string ventown, string venpostcode, decimal venlon, decimal venlat) 
     { 
      id = venid; 
      name = venname; 
      address1 = venaddress1; 
      town = ventown; 
      postcode = venpostcode; 
      lon = venlon; 
      lat = venlat; 

     } 
    } 
} 

第一个功能的作品,但第二个没有。

回答

4

您的类GetVenues未实现您的错误消息中提到的方法。你究竟在哪里卡住? GetVenuesByLocation(string search)在类别Venue中定义。

我注意到这个问题开始引起人们的兴趣。这里的问题很简单:你的类没有实现(即使它是abstract,你必须定义它们)界面中定义的所有方法。在编译之前,您的IDE应该警告您这一点。

+0

我在哪里需要把它,如果我移动它下来,我得到更多的错误,没有得到错误。 –

+0

您必须将该方法移至“GetVenues”类。可怕的班级名称的方式。 –

+0

谢谢!在你的帮助下,我设法让我的头转过来! –

0

第二项功能是一流的场地内没有GetVenues,将其移动到GetVenues

相关问题