Делая то же самое снова, вы просто настраиваете себя на тот же «беспорядок», когда вам нужно добавить другой параметр. Я настоятельно рекомендую вам взглянуть на наличие единственного параметра, который является контрактом данных;
public ReportResultObject GetReportTheSuperDooperWay(
GetReportParameters parameters)
Что это тебе дает? Ну
[DataContract]
public class GetReportParameters
{
[DataMember(IsRequired=false)]
public string parameters;
[DataMember(IsRequired=false)]
public int[] someIds;
[DataMember(IsRequired=false)]
bool includeAdditionalInformation
}
Таким образом, поскольку каждое поле является необязательным, вы можете добавлять новые поля, не нарушая существующих клиентов. Это довольно упрощенный пример, так как вы также захотите реализовать IExtensibleDataObject , и вы должны управлять версиями через пространства имен как на уровнях контракта service , так и data .