我在C#中使用供应商API包装了许多功能。每个包装函数都符合模式:
public IEnumerator<IValues> GetAggregateValues(string pointID, DateTime startDate, DateTime endDate, TimeSpan period) {
// Validate Data
// Break up Requesting Time-Span
// Make Requests
// Read Results (through another method call
}
6个请求中有5个是聚合数据提取并具有相同的签名,因此将它们放在一个方法中并传递聚合类型以避免代码重复是有意义的。但是,第6种方法遵循完全相同的模式,具有相同的结果集,但不是聚合,因此没有时间段传递给函数(更改签名)。
有没有一种优雅的方法来处理这种情况而无需编写一次性函数来处理非聚合请求?
答案 0 :(得分:2)
肯定有办法解决这个问题:
请注意,对于1和2,您需要检查这些条件,并根据值使用/跳过函数内的一些代码。
答案 1 :(得分:0)
我认为最好的方法是创建AggregateArgs类来保存请求的参数。你可以有这样的签名:
public IEnumerator<IValues> GetAggregateValues(AggregateArgs args);
如果您不需要,也可以将TimeSpan.Zero发送到您的方法。