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