다음을 통해 공유


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 인터페이스입니다. 형식을 사용 하 여 마쳤으면 직접 또는 간접적으로의 삭제 해야 있습니다. 직접 형식의 dispose 호출 해당 Dispose 의 메서드를 try/catch 블록입니다. 삭제 하지 직접, 언어 구문 같은 사용 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

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

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)

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

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

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

(다음에서 상속됨 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)

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

ReleaseExport<T>(Lazy<T>)

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

ReleaseExports(IEnumerable<Export>)

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

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)

재컴퍼지션을 사용하지 않도록 설정한 상태에서 지정된 컴퍼지션 서비스를 사용하여 지정된 파트를 작성합니다.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

재컴퍼지션을 비활성화하고 지정된 리플렉션 컨텍스트를 사용하여 지정된 컴퍼지션 서비스를 통해 지정된 파트를 작성합니다.

적용 대상

추가 정보