Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
192 views
in Technique[技术] by (71.8m points)

c# - does not implement interface member

Hi I have the following code but I keep getting the error:

'JsonWcfService.GetVenues' does not implement interface member 'GetVenuesByLocation(string search)'.

I am fairly new to C and .Net so most of this is cut and paste to be honest.

Your help would be much appreciated.

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;

        }
    }
}

The first function works but the second one doesn't.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your class GetVenues does not implement the method mentioned in your error message. Where exactly are you stuck? GetVenuesByLocation(string search) is defined in the class Venue.

I have noticed that this question is starting to garner interest. The issue here is very easy: your class does not implement (even if it's abstract, you have to define them) all methods defined in the interface. Your IDE should warn you of this before compiling.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...