The cast in the client-side code does not work probably because the
webservice proxy does not actually implement IEmployee.
your code like this:
[quoted text, click to view] > public IEmployee GetEmployee()
> {
> //WSEmployee is the webservice reference
> return new WSEmployee.Employee() as IEmployee;
> }
>
....I am guessing WSEmployee.Employee is the client-side proxy class
generated by wsdl.exe ? Open the .cs file and examine it and you'll see
that you have something like this:
public class Employee : System.Web.Services.Protocols.SoapHttpClientProtocol
{
public String GetName(...) {...}
public Int32 GetId(...) {...}
}
you must modify the generated (client-side) class to specifically state that
it implements your IEmployee interface. like so:
public class Employee :
System.Web.Services.Protocols.SoapHttpClientProtocol, IEmployee {
.....
}
Then compile your client and it should work.
-D
[quoted text, click to view] "Mike9900" <Mike9900@discussions.microsoft.com> wrote in message
news:055F26E2-9CF8-443B-93C7-DC40B01F714C@microsoft.com...
>I want to use an interface in both the webservice and its client. For
> example, the web service implements an interface and then the client cast
> that webservice to the inteface. It seems impossible, but I am wondering
> if
> there is a way.
>
> The code below shows how I want it:
>
> /*INTERFACE*/
> public interface IEmployee
> {
> String GetName();
> Int32 GetID();
>
> }
>
> /* WEBSERVICE*/
> public class Employee : System.Web.Services.WebService,IEmployee
> {
> public Employee()
> {
>
> //Uncomment the following line if using designed components
> //InitializeComponent();
> }
> [WebMethod]
> public string GetName()
> {
> return "Ali";
> }
> [WebMethod]
> public Int32 GetID()
> {
> return 2333;
> }
> }
>
> /*Windows Client*/
> //but this code is not casting, return null
> public IEmployee GetEmployee()
> {
> //WSEmployee is the webservice reference
> return new WSEmployee.Employee() as IEmployee;
> }
>
> --
> Mike