저는 CompositionBatch를 사용하여 구성 가능한 부품을 컨테이너에 추가하고 나중에 재구성을 통해 제거합니다. 모든 것이 잘 작동하고 구성과 재구성이 가능합니다. 하지만 내 문제는 기본 객체가 처리되지 않는다는 것입니다. 내 코드는 다음과 같습니다컨테이너에서 제거 할 때 부품 폐기
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export]
public class NonShared : IDisposable
{
public NonShared()
{
Console.WriteLine("Constructor of NonShared");
}
public void Dispose()
{
Console.WriteLine("Disposing NonShared");
}
}
class Program : IPartImportsSatisfiedNotification
{
[Import(AllowDefault=true, AllowRecomposition=true)]
private NonShared _nonShared;
public void OnImportsSatisfied()
{
Console.WriteLine("Program.OnImportsSatisfied()");
}
static void Main()
{
new Program().Run();
}
private void Run()
{
var partDefinition = AttributedModelServices.CreatePartDefinition(typeof(NonShared), null);
var exportingPart = partDefinition.CreatePart();
var addingBatch = new CompositionBatch();
addingBatch.AddPart(this);
addingBatch.AddPart(exportingPart);
var container = new CompositionContainer();
container.Compose(addingBatch);
// Do something.
var removingBatch = new CompositionBatch();
removingBatch.RemovePart(exportingPart);
container.Compose(removingBatch);
}
}
나는()를 호출 할 Nonshared.Dispose을 싶지만, 그것은 아닙니다. AddPart/RemovePart의 Parts Lifetime에 설명되어 있듯이 비공유 파트는이 상황에서 처리해야합니다. 내 코드에 실수가 있습니까?