Thanks for all your responses. You were all correct, what threw me was the object to be sent must contain the parameter in the service.
If the service is
public PLMPricePriceList findEx(PLMFindPriceListContract _contract)
I would of expected like c# REST service to be able to
var contract = new PLMFindPriceListContract() { _worker = empId, _dayDateFrom = fromDate, _dayDateTo = toDate };
string json = JsonConvert.SerializeObject(contract);
However because the service requires a parameter of name "_contract" I had to wrap the PLMFindPriceListContract in another object like below
var contract = new PLMFindPriceListContractWrapper() { _contract = new PLMFindPriceListContract() { _worker = empId, _dayDateFrom = fromDate, _dayDateTo = toDate }};
string json = JsonConvert.SerializeObject(contract);
Many thanks for the comments