创build或获取特定的SPTimeZone实例

创buildMicrosoft.SharePoint.SPTimeZone的特定实例的最便捷方法如下:

 SPTimeZone utc = SPRegionalSettings.GlobalTimeZones .OfType<SPTimeZone>() .FirstOrDefault(tz => tz.Information.Bias == 0 && tz.Information.DaylightBias == 0); 

这是黑客最好的一个我可以得到…

这对我来说尤其是一个问题,因为我想嘲笑这部分代码进行unit testing,强制它始终返回UTC。 属性GlobalTimeZones似乎依赖于HttpContext.Current或实际的请求 – 我没有在我的unit testing的先决条件…

注:我知道有System.TimeZoneInfo但第三方大会迫使我使用SPTimeZone …

为了停止讨论,我决定最终自己回答这个问题。

我想在这个简短的回答中收集一些真正有用的解决scheme:

  • 介绍一个门面/适配器
  • MS假货或其他框架
    • 假访问SPTimeZone
    • 创build一个假的HttpContext
  • 去在上面的问题中描述的黑客…

我本人决定和MSFFS一起去完成整个第三方调用(因为我不想testing它的行为),并且在我的方法中使用SPTimeZone的所有属性。 不幸的是,引入一个适配器不是我的select,因为我必须保留(内部)API。