Parâmetros de repouso do WCF envolvendo tipos complexos

Configurando um serviço WCF que usa o webHttpBinding ... Eu posso retornar tipos complexos do método como XML ok. Como eu pego um tipo complexo como parâmetro?

[ServiceContract(Name = "TestService", Namespace = "http://www.test.com/2009/11")]
public interface ITestService
{
    [OperationContract]
    [WebInvoke(Method = "POST", 
               BodyStyle = WebMessageBodyStyle.Bare, 
               UriTemplate = "/Person/{customerAccountNumber}, {userName}, {password}, {PersonCriteria}")]
    Person SubmitPersonCriteria(string customerAccountNumber, 
                                string userName, 
                                string password, 
                                PersonCriteria details);
}

Como o UriTemplate só permite strings, qual é a melhor prática? A ideia é que o aplicativo cliente publique uma solicitação ao serviço, como critérios de pesquisa para uma pessoa. O serviço responderá com o objeto apropriado contendo os dados como XML.

questionAnswers(3)

yourAnswerToTheQuestion