C# 4.0 我是否应该避免暴露懒惰者<;T>;公共API中的类?

C# 4.0 我是否应该避免暴露懒惰者<;T>;公共API中的类?,c#-4.0,architecture,lazy-evaluation,C# 4.0,Architecture,Lazy Evaluation,在库的公共接口的设计中,如果我想要延迟初始化,返回属性中的实例是否合法?还是通过封装或其他技术始终隐藏Lazy的用法更好?对于以下我是assumim,您指的是Lazy属性 这取决于界面的用途 消费者知道自己懒惰,这是一个重要的细节吗?或者它只是一个技术细节,不应该改变消费者的行为 如果你只是有一个短暂的延迟,消费者不能处理,那么我会倾向于海德的懒惰,只直接暴露T 如果消费者应该意识到并可能适应这种行为,那么我会揭露懒惰者 但是考虑到这一点,在大多数情况下,我宁愿公开一个方法,该方法指示代码可能有

在库的公共接口的设计中,如果我想要延迟初始化,返回属性中的实例是否合法?还是通过封装或其他技术始终隐藏
Lazy
的用法更好?

对于以下我是assumim,您指的是Lazy属性

这取决于界面的用途

消费者知道自己懒惰,这是一个重要的细节吗?或者它只是一个技术细节,不应该改变消费者的行为

如果你只是有一个短暂的延迟,消费者不能处理,那么我会倾向于海德的懒惰,只直接暴露T

如果消费者应该意识到并可能适应这种行为,那么我会揭露懒惰者


但是考虑到这一点,在大多数情况下,我宁愿公开一个方法,该方法指示代码可能有副作用或可能需要一段时间。

我看不出有任何理由直接在签名中公开。在我的用例中,惰性是一个实现细节

如果初始化长时间运行,则不要在属性中使用此选项。在这种情况下,不如提供一种方法,考虑返回