2010-06-21 Atsushi Enomoto <atsushi@ximian.com>
[mcs.git] / class / System.ComponentModel.Composition / src / ComponentModel / System / ComponentModel / Composition / ExportServices.DisposableLazy.cs
blobaf8dc0ff8e694e9c9ba3284d69185b52fe0c3d6f
1 // -----------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 // -----------------------------------------------------------------------
4 using System;
5 using System.ComponentModel.Composition.Primitives;
6 using System.Globalization;
7 using Microsoft.Internal;
8 using System.Collections.Generic;
10 namespace System.ComponentModel.Composition
12 partial class ExportServices
14 private sealed class DisposableLazy<T, TMetadataView> : Lazy<T, TMetadataView>, IDisposable
16 private IDisposable _disposable;
18 public DisposableLazy(Func<T> valueFactory, TMetadataView metadataView, IDisposable disposable)
19 : base(valueFactory, metadataView)
21 Assumes.NotNull(disposable);
23 this._disposable = disposable;
26 void IDisposable.Dispose()
28 this._disposable.Dispose();
32 private sealed class DisposableLazy<T> : Lazy<T>, IDisposable
34 private IDisposable _disposable;
36 public DisposableLazy(Func<T> valueFactory, IDisposable disposable)
37 : base(valueFactory)
39 Assumes.NotNull(disposable);
41 this._disposable = disposable;
44 void IDisposable.Dispose()
46 this._disposable.Dispose();