| File: System\Composition\TypedParts\ActivationFeatures\DisposalFeature.cs | Web Access |
| Project: src\runtime\src\libraries\System.Composition.TypedParts\src\System.Composition.TypedParts.csproj (System.Composition.TypedParts) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; using System.Composition.Hosting.Core; using System.Reflection; namespace System.Composition.TypedParts.ActivationFeatures { /// <summary> /// Modifies the activator so that disposable instances are bound to the appropriate scope. /// </summary> internal sealed class DisposalFeature : ActivationFeature { public override CompositeActivator RewriteActivator( TypeInfo partType, CompositeActivator activator, IDictionary<string, object> partMetadata, IEnumerable<CompositionDependency> dependencies) { if (!typeof(IDisposable).GetTypeInfo().IsAssignableFrom(partType)) return activator; return (c, o) => { var inst = (IDisposable)activator(c, o); c.AddBoundInstance(inst); return inst; }; } } }