CompositionContainer.Compose(CompositionBatch) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컨테이너에서 지정된 CompositionBatch의 파트를 추가하거나 제거하고 컴퍼지션을 실행합니다.
public:
void Compose(System::ComponentModel::Composition::Hosting::CompositionBatch ^ batch);
public void Compose (System.ComponentModel.Composition.Hosting.CompositionBatch batch);
member this.Compose : System.ComponentModel.Composition.Hosting.CompositionBatch -> unit
Public Sub Compose (batch As CompositionBatch)
매개 변수
- batch
- CompositionBatch
컴퍼지션 중에 포함할 CompositionContainer에 대한 변경 사항입니다.
예제
이 간단한 예제에서는 3개의 파트가 만들어지고 에 CompositionContainer추가되고, 한 부분이 검색되어 모든 가져오기가 채워졌는지 보여 줍니다. 이 예제에서는 특성 프로그래밍 모델을 사용합니다.
[Export]
class Part1
{
public String data = "This is the example data!";
}
[Export]
class Part2
{
[Import]
public Part1 data { get; set; }
}
[Export]
class Part3
{
[Import]
public Part2 data { get; set; }
}
class Program
{
static void Main(string[] args)
{
CompositionContainer container = new CompositionContainer();
CompositionBatch batch = new CompositionBatch();
batch.AddPart(AttributedModelServices.CreatePart(new Part1()));
batch.AddPart(AttributedModelServices.CreatePart(new Part2()));
batch.AddPart(AttributedModelServices.CreatePart(new Part3()));
container.Compose(batch);
Part3 _part = container.GetExportedValue<Part3>();
Console.WriteLine(_part.data.data.data);
Console.ReadLine();
}
}
<Export()>
Public Class Part1
Public ReadOnly Property data As String
Get
Return "This is the example data!"
End Get
End Property
End Class
<Export()>
Public Class Part2
<Import()>
Public Property data As Part1
End Class
<Export()>
Public Class Part3
<Import()>
Public Property data As Part2
End Class
Sub Main()
Dim container As New CompositionContainer()
Dim batch As New CompositionBatch()
batch.AddPart(AttributedModelServices.CreatePart(New Part1()))
batch.AddPart(AttributedModelServices.CreatePart(New Part2()))
batch.AddPart(AttributedModelServices.CreatePart(New Part3()))
container.Compose(batch)
Dim _part As Part3
_part = container.GetExportedValue(Of Part3)()
Console.WriteLine(_part.data.data.data)
Console.ReadLine()
End Sub
설명
이 메서드는 컨테이너에서 파트를 직접 추가하거나 제거하는 기본 방법입니다. 는 CompositionContainer 항상 안정적이고 구성된 상태를 유지합니다. 따라서 컴퍼지션을 시작하는 데 빈 CompositionBatch 를 사용하여 를 호출 Compose 할 필요가 없습니다. 대신 에서 사용할 수 있는 파트를 변경해야 할 때마다 메서드를 CompositionContainer호출 Compose 합니다.
는 CompositionBatch 추가할 부분과 제거할 파트를 모두 포함할 수 있습니다. 다시 처리는 에 대한 각 호출 Compose에 대해 한 번만 수행됩니다.
적용 대상
추가 정보
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET