CompositionContainer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파트의 컴퍼지션을 관리합니다.
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 카탈로그를 사용하여 초기화되고 파트의 가져오기를 채우는 데 사용됩니다. 이 예제에서는 특성 프로그래밍 모델을 사용합니다.
[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) |
재컴퍼지션을 비활성화하고 지정된 리플렉션 컨텍스트를 사용하여 지정된 컴퍼지션 서비스를 통해 지정된 파트를 작성합니다. |
적용 대상
추가 정보
.NET