我应该避免几个布尔参数吗?

时间:2016-02-03 07:18:48

标签: c# wcf

我正在创建临时报告解决方案,所以我想出了一个这样的方法,它在WCF服务中添加,将从前端客户端调用,

  

GetEmployeeDetails(int id,bool includeAddressHistory,bool   includeSalaryHistory,bool includePositionHistory,bool   includeProjectHistory,...永不结束列表)

现在的问题是我需要根据过滤器获取所有数据,然后返回完整的数据集或将其作为流返回,因为我有另一种方法将流返回相同的数据集,

2 个答案:

答案 0 :(得分:2)

通常,当您需要传递相当多的参数(无论其类型如何)时,是时候考虑parameter object

// this is just POCO
public class SearchParameters
{
    public string SomeString { get; set; }
    public DateTime? SomeDate { get; set; }
    public bool? SomeBool { get; set; }
    // etc...
}

IEnumerable<SomeEntitites> GetSomeEntitites(SearchParameters searchParameters);

请注意,对于构造函数案例,解决方案可以是构建器模式。

答案 1 :(得分:1)

如果事情变得更复杂,另一种方法是让一个类定义EmployeeDetailsRequestParameters。如果你还做过滤这样的事情,并且除了可以容纳到可枚举的标志之外还有很多东西,这个特别有用。