Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface IFoo
- {
- Task<IEnumerable<Bar>> BarsAsync { get; }
- }
- interface IFoo
- {
- IEnumerable<Bar> Bars { get; }
- }
- internal class ExpensiveFoo : IFoo
- {
- private readonly Lazy<IEnumerable<Bar>> bars;
- public IEnumerable<Bar> Bars { get { return bars.Value; } }
- public ExpensiveFoo() { bars = new Lazy<IEnumerable<Bar>>(GetBars); }
- private IEnumerable<Bar> GetBars() { … /* some expensive computation */ }
- }
- interface IFoo
- {
- Task<IEnumerable<Bar>> BarsAsync { get; }
- }
- internal class ExpensiveFoo : IFoo
- {
- private Lazy<Task<IEnumerable<Bar>>> bars;
- public Task<IEnumerable<Bar>> BarsAsync { get { return bars.Value; } }
- public ExpensiveFoo() { bars = new Lazy<Task<IEnumerable<Bar>>>(GetBarsAsync); }
- private async Task<IEnumerable<Bar>> GetBarsAsync() { … };
- }
- internal class CheapFoo : IFoo
- {
- public Task<IEnumerable<Bar>> BarsAsync { get { return Task.FromResult(bars) } }
- private IEnumerable<Bar> bars;
- public CheapFoo(IEnumerable<Bar> bars) { this.bars = bars; }
- }
- Foo foo = …;
- foreach (Bar bar in await foo.BarsAsync) …
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement