다음을 통해 공유


CompositionContainer 클래스

정의

파트의 컴퍼지션을 관리합니다.

public ref class CompositionContainer : System::ComponentModel::Composition::Hosting::ExportProvider, IDisposable, System::ComponentModel::Composition::ICompositionService
public class CompositionContainer : System.ComponentModel.Composition.Hosting.ExportProvider, IDisposable, System.ComponentModel.Composition.ICompositionService
type CompositionContainer = class
    inherit ExportProvider
    interface ICompositionService
    interface IDisposable
Public Class CompositionContainer
Inherits ExportProvider
Implements ICompositionService, IDisposable
상속
CompositionContainer
구현

예제

다음 예제에서는 카탈로그를 사용하여 CompositionContainer 개체를 초기화하고 파트의 가져오기를 채우는 데 사용됩니다. 이 예제에서는 특성 프로그래밍 모델을 사용합니다.

[Export]
class MyAddin
{
    public String myData { get { return "The data!"; } }
}

class MyProgram
{
    [Import]
    public MyAddin myAddin { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        AggregateCatalog catalog = new AggregateCatalog();
        catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyAddin).Assembly));
        CompositionContainer _container = new CompositionContainer(catalog);
        MyProgram myProgram = new MyProgram();
        _container.SatisfyImportsOnce(myProgram);
        Console.WriteLine(myProgram.myAddin.myData);
        Console.ReadLine();

        _container.Dispose();
    }
}
<Export()>
Public Class MyAddin
    Public ReadOnly Property theData As String
        Get
            Return "The Data!"
        End Get
    End Property
End Class

Public Class MyProgam
    Private _MyAddin As MyAddin

    <Import()>
    Public Property MyAddinProperty As MyAddin
        Get
            Return _MyAddin
        End Get
        Set(ByVal value As MyAddin)
            _MyAddin = value
        End Set
    End Property

End Class



Sub Main()
    Dim catalog As AggregateCatalog = New AggregateCatalog()
    catalog.Catalogs.Add(New AssemblyCatalog(GetType(MyAddin).Assembly))
    Dim container As CompositionContainer = New CompositionContainer(catalog)
    Dim theProgam As MyProgam = New MyProgam()
    container.SatisfyImportsOnce(theProgam)
    Console.WriteLine(theProgam.MyAddinProperty.theData)
    Console.ReadLine()

    container.Dispose()

End Sub

설명

CompositionContainer 개체는 애플리케이션에서 두 가지 주요 용도로 사용됩니다. 먼저 컴퍼지션에 사용할 수 있는 부분과 해당 종속성을 추적하고 사용 가능한 파트 집합이 변경되면 컴퍼지션을 수행합니다. 둘째, 애플리케이션이 구성된 파트의 인스턴스를 가져오거나 구성 가능한 파트의 종속성을 채우는 메서드를 제공합니다.

중요하다

이 형식은 IDisposable 인터페이스를 구현합니다. 형식 사용을 마쳤으면 직접 또는 간접적으로 삭제해야 합니다. 형식을 직접 삭제하려면 try/catch 블록에서 해당 Dispose 메서드를 호출합니다. 간접적으로 삭제하려면 using(C#) 또는 Using(Visual Basic)와 같은 언어 구문을 사용합니다. 자세한 내용은 IDisposable 인터페이스 항목의 "IDisposable을 구현하는 개체 사용" 섹션을 참조하세요.

직접 또는 Catalog 속성을 통해 컨테이너에서 파트를 사용할 수 있습니다. 이 ComposablePartCatalog 검색 가능한 모든 파트는 직접 추가된 부품과 함께 가져오기를 수행하기 위해 컨테이너에서 사용할 수 있습니다.

Compose 메서드를 사용하면 인스턴스화된 부분을 기존 컨테이너에 추가할 수 있습니다. 컴퍼지션이 성공했다고 가정하면 이러한 부품은 컨테이너에서 검색된 부품으로 채워진 가져오기를 갖게 되며, 해당 내보내기는 다른 파트에서 사용할 수 있습니다. 다시 컴파일 가능으로 표시된 가져오기는 다시 처리를 위해 등록됩니다.

SatisfyImportsOnce 메서드를 사용하면 파트가 컨테이너에 추가되지 않고도 해당 가져오기를 채울 수 있습니다. 컴퍼지션에 성공하면 부품의 가져오기가 채워지지만 부품의 내보내기는 다른 파트에서 사용할 수 없으며 재구정을 위해 가져오기가 등록되지 않습니다.

CompositionContainer 개체는 항상 삭제되어야 합니다. Dispose 메서드가 호출되면 CompositionContainer 개체는 만든 모든 부분도 삭제합니다.

여러 스레드에서 액세스할 수 있는 CompositionContainer 개체는 CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) 생성자를 사용하여 isThreadSafe 매개 변수를 true설정하여 생성해야 합니다. isThreadSafe true경우 성능이 약간 느려지므로 이 매개 변수를 단일 스레드 시나리오에서 false 설정하는 것이 좋습니다. 기본값은 false.

경고

CompositionContainer 자체 또는 참조가 있는 파트를 가져오지 않아야 합니다. 이러한 참조를 사용하면 신뢰할 수 없는 부분이 컨테이너의 모든 부분에 액세스할 수 있습니다.

생성자

CompositionContainer()

CompositionContainer 클래스의 새 인스턴스를 초기화합니다.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

지정된 카탈로그, 스레드로부터 안전한 모드 및 내보내기 공급자를 사용하여 CompositionContainer 클래스의 새 인스턴스를 초기화합니다.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

지정된 카탈로그, 옵션 및 내보내기 공급자를 사용하여 CompositionContainer 클래스의 새 인스턴스를 초기화합니다.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

지정된 카탈로그 및 내보내기 공급자를 사용하여 CompositionContainer 클래스의 새 인스턴스를 초기화합니다.

CompositionContainer(CompositionOptions, ExportProvider[])

지정된 내보내기 공급자 및 옵션을 사용하여 CompositionContainer 클래스의 새 인스턴스를 초기화합니다.

CompositionContainer(ExportProvider[])

지정된 내보내기 공급자를 사용하여 CompositionContainer 클래스의 새 인스턴스를 초기화합니다.

속성

Catalog

Export 개체에 대한 컨테이너 액세스를 제공하는 ComposablePartCatalog 가져옵니다.

Providers

추가 ComposablePartCatalog 개체에 대한 컨테이너 액세스를 제공하는 내보내기 공급자를 가져옵니다.

메서드

Compose(CompositionBatch)

컨테이너에서 지정된 CompositionBatch 파트를 추가하거나 제거하고 컴퍼지션을 실행합니다.

Dispose()

CompositionContainer 클래스의 현재 인스턴스에서 사용하는 모든 리소스를 해제합니다.

Dispose(Boolean)

CompositionContainer 사용하는 관리되지 않는 리소스를 해제하고 필요에 따라 관리되는 리소스를 해제합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetExport<T,TMetadataView>()

지정된 형식 매개 변수에서 파생된 계약 이름을 사용하여 내보내기를 반환합니다. 정확히 일치하는 내보내기가 하나도 없으면 예외가 throw됩니다.

(다음에서 상속됨 ExportProvider)
GetExport<T,TMetadataView>(String)

지정된 계약 이름을 가진 내보내기를 반환합니다. 정확히 일치하는 내보내기가 하나도 없으면 예외가 throw됩니다.

(다음에서 상속됨 ExportProvider)
GetExport<T>()

지정된 형식 매개 변수에서 파생된 계약 이름을 사용하여 내보내기를 반환합니다. 정확히 일치하는 내보내기가 하나도 없으면 예외가 throw됩니다.

(다음에서 상속됨 ExportProvider)
GetExport<T>(String)

지정된 계약 이름을 가진 내보내기를 반환합니다. 정확히 일치하는 내보내기가 하나도 없으면 예외가 throw됩니다.

(다음에서 상속됨 ExportProvider)
GetExportedValue<T>()

지정된 형식 매개 변수에서 파생된 계약 이름을 사용하여 내보낸 개체를 반환합니다. 정확히 일치하는 내보낸 개체가 하나도 없으면 예외가 throw됩니다.

(다음에서 상속됨 ExportProvider)
GetExportedValue<T>(String)

지정된 계약 이름을 사용하여 내보낸 개체를 반환합니다. 정확히 일치하는 내보낸 개체가 하나도 없으면 예외가 throw됩니다.

(다음에서 상속됨 ExportProvider)
GetExportedValueOrDefault<T>()

지정된 형식 매개 변수 또는 지정된 형식의 기본값에서 파생된 계약 이름을 사용하여 내보낸 개체를 가져오거나 일치하는 내보낸 개체가 두 개 이상 있는 경우 예외를 throw합니다.

(다음에서 상속됨 ExportProvider)
GetExportedValueOrDefault<T>(String)

지정된 계약 이름 또는 지정된 형식의 기본값을 사용하여 내보낸 개체를 가져오거나 일치하는 내보낸 개체가 두 개 이상 있는 경우 예외를 throw합니다.

(다음에서 상속됨 ExportProvider)
GetExportedValues<T>()

지정된 형식 매개 변수에서 파생된 계약 이름을 사용하여 내보낸 모든 개체를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExportedValues<T>(String)

지정된 계약 이름을 사용하여 내보낸 모든 개체를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

지정된 가져오기 정의 및 컴퍼지션의 조건과 일치하는 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExports(ImportDefinition)

지정된 가져오기 정의의 조건과 일치하는 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExports(Type, Type, String)

지정된 계약 이름을 가진 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExports<T,TMetadataView>()

지정된 형식 매개 변수에서 파생된 계약 이름을 가진 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExports<T,TMetadataView>(String)

지정된 계약 이름을 가진 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExports<T>()

지정된 형식 매개 변수에서 파생된 계약 이름을 가진 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExports<T>(String)

지정된 계약 이름을 가진 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

지정된 ImportDefinition 개체의 조건과 일치하는 모든 내보내기 컬렉션을 반환합니다.

GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnExportsChanged(ExportsChangeEventArgs)

ExportsChanged 이벤트를 발생합니다.

(다음에서 상속됨 ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

ExportsChanging 이벤트를 발생합니다.

(다음에서 상속됨 ExportProvider)
ReleaseExport(Export)

CompositionContainer지정된 Export 개체를 해제합니다.

ReleaseExport<T>(Lazy<T>)

컴퍼지션에서 지정된 내보내기를 제거하고 가능한 경우 해당 리소스를 해제합니다.

ReleaseExports(IEnumerable<Export>)

CompositionContainer Export 개체 집합을 해제합니다.

ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>)

컴퍼지션에서 내보내기 컬렉션을 제거하고 가능하면 리소스를 해제합니다.

ReleaseExports<T>(IEnumerable<Lazy<T>>)

컴퍼지션에서 내보내기 컬렉션을 제거하고 가능하면 리소스를 해제합니다.

SatisfyImportsOnce(ComposablePart)

다시 처리를 위해 등록하지 않고 지정된 ComposablePart 개체의 가져오기를 충족합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

지정된 가져오기의 조건과 일치하는 모든 내보내기를 가져옵니다.

(다음에서 상속됨 ExportProvider)

이벤트

ExportsChanged

ExportProvider 내보내기가 변경되면 발생합니다.

(다음에서 상속됨 ExportProvider)
ExportsChanging

제공된 내보내기가 변경될 때 발생합니다.

(다음에서 상속됨 ExportProvider)

확장 메서드

ComposeExportedValue<T>(CompositionContainer, T)

지정된 값에서 파트를 만들고 지정된 컴퍼지션 컨테이너에 작성합니다.

ComposeExportedValue<T>(CompositionContainer, String, T)

지정된 계약 이름 아래에 지정된 개체에서 파트를 만들고 지정된 컴퍼지션 컨테이너에 작성합니다.

ComposeParts(CompositionContainer, Object[])

특성이 지정된 개체의 배열에서 구성 가능한 파트를 만들고 지정된 컴퍼지션 컨테이너에 구성합니다.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

지정된 컴퍼지션 서비스를 사용하고, 재구성을 사용하지 않도록 설정하며, 지정된 리플렉션 컨텍스트를 사용하여 지정된 부분을 구성합니다.

SatisfyImportsOnce(ICompositionService, Object)

지정된 컴퍼지션 서비스를 사용하여 지정된 부분을 구성하고, 다시 처리를 사용하지 않도록 설정합니다.

적용 대상

추가 정보