繁体   English   中英

如何从CompositionContainer取消注册ComposablePart

[英]How to unregister a ComposablePart from CompositionContainer

我将MEF与静态CompositionContainer结合使用。 我的班级像这样使用这个容器:

public void SomeClass
{
    [Import(typeof(AnotherClass)]
    private AnotherClass Instance {get;set;}

    public SomeClass()
    {
        MEFContext.RegisterAttributedPart(this); // this basically calls CompositionContainer.ComposeParts(this);
    }
}

现在的问题是,SomeClass的实例将永远不会被释放,因为CompositionContainer会保留一个实例。 我将如何释放该实例?

附加信息:

  • AnotherClass具有PartCreationPolicy和CreationPolicy.Shared

CompositionContainer实现IDisposable。 您是否要在CompositionContainer上调用Dispose或using模式并释放对其的引用?

在.NET 4中,似乎使用的MEF实现不支持子容器和过滤的目录。 我通过创建一个新容器并使用仅包含必要项目的目录来解决了上述问题。 当我不再需要这个容器了。 在.NET 4.5中,可以使用子容器解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM