Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

does not implement interface member

Tags:

c#

asp.net

wcf

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.

like image 503
Jason Wragg Avatar asked Aug 17 '13 16:08

Jason Wragg


2 Answers

Second function is inside the class Venue not in GetVenues, move it to GetVenues

like image 77
Alessandro D'Andria Avatar answered Nov 07 '22 15:11

Alessandro D'Andria


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.

like image 38
Jeroen Vannevel Avatar answered Nov 07 '22 14:11

Jeroen Vannevel