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.
Second function is inside the class Venue not in GetVenues, move it to GetVenues
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With