We can use generated proxy and
contract for client as they are, but we need to rework them to provide
overloading on the client side. Rename the methods on the imported contract and
the proxy to the overloaded names, and make sure the proxy class makes calls on
the internal proxy using the overloaded methods. Then use the Name property on the imported contract
on the client side to alias and overload the methods, matching the imported
operation names.
[ServiceContract]
interface IUser
{
[OperationContract(Name= "AddUser")]
int Add(string
arg1, string arg2);
[OperationContract(Name = "AddUserWithEmail")]
int Add(string
arg1, string arg2 ,
string arg3);
}
class UserClient : ClientBase<IUser>, IUser
{
public int
Add(string arg1, string
arg2)
{
return Channel.Add(arg1, arg2);
}
public int
Add(string arg1, string
arg2 , string arg3)
{
return Channel.Add(string arg1, string
arg2, string arg3);
}
//Rest of the proxy
}
Now we can use readable overloaded operations.
UserClient proxy = new
UserClient();
int UserID = proxy.Add("mukesh",
"123456");
int UserIDWithEmail = proxy.Add("mukesh",
"123456", "[email protected]");
proxy.Close();