0

我有一个方法,它接受一些参数并生成一些 XML 以发送到 [archaic] Web 服务。

我需要包含在 XML 中:

日期 (yyyy-mm-dd)

开放时间 (hh:mm)

关门时间 (hh:mm)

现在,当我不得不单独提供日期/时间时,我采用了一个 DateTime 参数并将日期格式化为一个字段,将时间格式化为另一个字段。

在这种情况下,我有一个日期和一天中的 2 次。

我最初的方法是 3 个输入字段 - 一个日期,2 个时间跨度。这感觉不对,因为时间跨度可能超过一天。

另一个想法是取 2 个日期 - 将一个日期用于日期字段,然后将两个日期的时间用于其他字段。这感觉不对,因为提供的日期实际上可能是不同的日子。

我能想到的最后一个选项是有一个OpeningDateTime参数和一个OpenDuration时间跨度,但是,由于开/关时间是根据星期几(而不是日期)存储的,开发人员需要自己计算时间跨度——这看起来很愚蠢违反 DRY 原则。更不用说时间跨度可以> 1天

简而言之,我有 3 个可行的解决方案,但没有一个感觉是正确的——前 2 个解决方案只会在运行时解决问题。如果方法定义很难传入无效数据(如果不是不可能的话),我会更喜欢它 - 然后在设计时会看到

也许我过度分析了,但必须有一种更简洁的方法来做到这一点

有没有人有首选的方法,如果有,为什么?

4

1 回答 1

3

真正想要的是一个库,它具有分别表示“日期”和“时间”的类型......就像野田时间......但不幸的是,它还没有准备好投入生产:(基本上.NET没有非常丰富的一组按时间顺序排列的类型:(

我认为您对 DateTime + 2 TimeSpans 的最初想法是目前最好的想法。特别是,事实DateTime.TimeOfDay表明TimeSpan,您可以在正常方法中获得尽可能合适的表示。

于 2010-08-26T12:36:42.337 回答