1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 using System.Collections.Generic;
6 using System.ComponentModel.Composition.Primitives;
7 using System.Linq;
8 using Xunit;
9 
10 namespace System.ComponentModel.Composition.Factories
11 {
12     partial class PartFactory
13     {
14         // NOTE: Do not add any more behavior to this class, as ComposablePartTests.cs
15         // uses this to verify default behavior of the base class.
16         private class DisposableComposablePart : ComposablePart, IDisposable
17         {
18             private readonly Action<bool> _disposeCallback;
19 
DisposableComposablePart(Action<bool> disposeCallback)20             public DisposableComposablePart(Action<bool> disposeCallback)
21             {
22                 Assert.NotNull(disposeCallback);
23 
24                 _disposeCallback = disposeCallback;
25             }
26 
Dispose()27             public void Dispose()
28             {
29                 this.Dispose(true);
30             }
31 
~DisposableComposablePart()32             ~DisposableComposablePart()
33             {
34                 Dispose(false);
35             }
36 
Dispose(bool disposing)37             protected virtual void Dispose(bool disposing)
38             {
39                 _disposeCallback(disposing);
40             }
41 
42             public override IEnumerable<ImportDefinition> ImportDefinitions
43             {
44                 get { return Enumerable.Empty<ImportDefinition>(); }
45             }
46 
47             public override IEnumerable<ExportDefinition> ExportDefinitions
48             {
49                 get { return Enumerable.Empty<ExportDefinition>(); }
50             }
51 
GetExportedValue(ExportDefinition definition)52             public override object GetExportedValue(ExportDefinition definition)
53             {
54                 throw new NotImplementedException();
55             }
56 
SetImport(ImportDefinition definition, IEnumerable<Export> exports)57             public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
58             {
59                 throw new NotImplementedException();
60             }
61 
62             public override IDictionary<string, object> Metadata
63             {
64                 get { return new Dictionary<string, object>(); }
65             }
66         }
67     }
68 }
69