我一直在研究一种API(它包含各种各样的网络服务)已经有一段时间了,它的功能已经完成了。
我最初将此API设计为延迟/延迟加载;考虑到使用Web服务时固有的延迟,如果您只对可用数据的一小部分感兴趣,这是完全合理的。但是,我没有考虑一些用例,在这些用例中,API的消费者可以更加轻松地进行加载。
所以,我的问题是:您希望看到一个主要是延迟加载的API公开一种机制来获取急切加载的类版本吗?
我倾向于explicit
演员,但如果更加冗长,Eager.AsEager(SomeDelayLoadingObject)
的某些内容似乎也很自然。
答案 0 :(得分:0)
我实际上最终做的是创建一个我想要加载的类的浅表副本,没有功能代码但具有所有相同属性的类。
然后我定义了两个隐式转换,来自lazy-> eager和eager-> lazy。两个演员都复制了所有属性;从而在需要时触发任何负载。
虽然我认为这不是一个完美的解决方案,但它只是急切地加载简单的类型;不需要更改代码。
答案 1 :(得分:0)
您的API正在包装Web服务,因此您的API或多或少充当代理。我会将加载行为放在代理本身上,或者放在某种代理上下文上,而不是放在类上。
// Basic: Every operation through the proxy uses Eager loading
using (var proxy = new ApiProxy(Loading.Eager))
{
var result = proxy.DoSomething();
}