Use the polymorphism, or, create a generic class that can be configured according to the client.
If there are only 2 or 3 models, I would use the polymorphism, if there is a need to add more others in the future, I would use only a generic class that would have all this configuration done in a database.
Ex: Polymorphism
public class Produto
{
public virtual string GetXml()
{
return "<codigo>1</codigo><descricao>Produto</descricao>";
}
}
public class ProdutoClienteA : Produto
{
public override string GetXml()
{
return "<codigoProduto>1</codigoProduto><descProduto>Produto</descProduto>";
}
}
public class WebService
{
public string GetProduto(string cliente)
{
Produto obj;
if (cliente=="A")
{
obj = new ProdutoClienteA();
}
else
{
obj = new Produto();
}
return obj.GetXml();
}
}
Remembering that it is just a simple example, there are several other features to implement, including serialization, which would automatically generate the object's xml.
otherwise, it would have a relationship table of the fields of products, clients, and values that should be assigned, eg
Field, Customer, new Field
code, A, codeProduct
code, B, codProd
there the client would enter all the configuration he needs, and when he returns in the webservice, he just reads this table and replaces the field with the correct value. That way if a new client comes up with a totally different configuration, no intervention in the program is required.