0

我一直在研究一个 API(它包装了各种各样的网络服务),而且它的功能已经完成了。

我最初将这个 API 设计为始终延迟/延迟加载;考虑到使用 Web 服务固有的延迟,如果您只对可用数据的一小部分感兴趣,那么这非常有意义。但是,我没有考虑一些用例,在这些用例中,对于 API 的使用者来说,预先加载会更容易。

所以,我的问题是:你希望看到一个主要是延迟加载的 API 公开一种获取热加载版本的类的机制吗?

我倾向于explicit演员阵容,但Eager.AsEager(SomeDelayLoadingObject)如果更冗长的话,类似的东西也似乎很自然。

4

2 回答 2

0

我实际上最终做的是创建一个我想要急切加载的类的浅表副本,这些类没有功能代码但具有所有相同的属性。

然后我定义了两个隐式转换,从lazy->eager 和eager->lazy。两个演员都复制了所有属性;从而在需要时触发任何加载。

虽然我认为这不是一个完美的解决方案,但它可以让加载简单地改变类型;无需更改代码。

于 2009-12-21T23:01:03.440 回答
0

您的 API 正在包装 Web 服务,因此您的 API 或多或少充当代理。我会将加载行为放在代理本身或某种代理上下文上,而不是放在类上。

// Basic: Every operation through the proxy uses Eager loading
using (var proxy = new ApiProxy(Loading.Eager))
{
  var result = proxy.DoSomething();
}
于 2013-03-22T19:14:04.953 回答