방법: 정규화 데이터 사용

하나 이상의 QualificationDataAttribute 특성을 파이프라인 세그먼트에 적용하면 다양한 용도로 해당 세그먼트에 정규화 데이터를 할당할 수 있습니다. 각 특성은 문자열 데이터의 간단한 이름/값 쌍을 지정합니다. 예를 들어, 이름/값 쌍을 "Security"와 "FullTrust"로 지정하여 완전 신뢰 수준으로 추가 기능을 활성화해야 함을 나타낼 수 있습니다. 마찬가지로 이름/값 쌍을 "Isolation"과 "NewProcess"로 지정하여 파이프라인 세그먼트를 별도의 프로세스에 격리시켜야 함을 나타낼 수 있습니다.

파이프라인 세그먼트에 정규화 데이터를 적용하려면

  • QualificationDataAttribute 특성을 사용합니다.

    ' This pipeline segment has
    ' two attributes:
    ' 1 - An AddInAttribute to identify
    '     this segment as an add-in.
    '
    ' 2 - A QualificationDataAttribute to
    '     indicate that the add-in should
    '     be loaded into a new application domain.
    
    <AddIn("Calculator Add-in", Version:="2.0.0.0")> _
    <QualificationData("Isolation", "NewAppDomain")> _
        Public Class SampleV2AddIn
    
    // This pipeline segment has
    // two attributes:
    // 1 - An AddInAttribute to identify
    //     this segment as an add-in.
    //
    // 2 - A QualificationDataAttribute to
    //     indicate that the add-in should
    //     be loaded into a new application domain.
    
        [AddIn("Calculator Add-in",Version="2.0.0.0")]
        [QualificationData("Isolation", "NewAppDomain")]
        public class SampleV2AddIn : Calculator2
        {
    

특정 파이프라인 세그먼트에 대한 정규화 데이터를 확인하려면

  • AddInToken 개체에서 QualificationData 속성을 사용하여 세그먼트 사전 및 토큰과 연결된 정규화 데이터를 가져온 다음, 적절한 AddInSegmentType 값을 사용하여 원하는 세그먼트의 정규화 데이터를 구성하는 이름/값 쌍이 포함된 사전을 가져옵니다.

    ' Use qualification data to control
    ' how an add-in should be activated.
    
    If selectedToken.QualificationData(AddInSegmentType.AddIn)("Isolation").Equals("NewProcess") Then
        ' Create an external process.
        Dim external As AddInProcess = New AddInProcess
    
        ' Activate an add-in in an automatically generated
        ' application domain with a full trust security level.
        Dim CalcAddin5 As Calculator = _
            selectedToken.Activate(Of Calculator)(external, _
                AddInSecurityLevel.FullTrust)
        Console.WriteLine("Add-in activated per qualification data.")
    Else
        Console.WriteLine("This add-in is not designated to be activated in a new process.")
    End If
    
    // Use qualification data to control 
    // how an add-in should be activated.
    
    if (selectedToken.QualificationData[AddInSegmentType.AddIn]["Isolation"].Equals("NewProcess"))
    {
        // Create an external process.
        AddInProcess external = new AddInProcess();
    
        // Activate an add-in in the new process
        // with the full trust security level.
        Calculator CalcAddIn5 =
            selectedToken.Activate<Calculator>(external,
            AddInSecurityLevel.FullTrust);
        Console.WriteLine("Add-in activated per qualification data.");
    }
    else
        Console.WriteLine("This add-in is not designated to be activated in a new process.");
    

    세그먼트에 대한 정규화 데이터가 없으면 이름/값 쌍이 포함된 사전이 비어 있습니다.

    참고참고

    추가 기능 모델은 추가 기능의 호스트 뷰에 적용되는 정규화 데이터를 사용하지 않습니다.따라서 AddInSegmentType.HostViewOfAddIn의 사전은 항상 비어 있습니다.

모든 파이프라인 세그먼트에 대한 정규화 데이터 목록을 표시하려면

  • AddInToken 개체를 QualificationDataItem 구조체 컬렉션인 것처럼 열거합니다.

    ' Show the qualification data for each
    ' token in an AddInToken collection.
    For Each token As AddInToken In tokens
        For Each qdi As QualificationDataItem In token
            Console.WriteLine("{0} {1}\n\t QD Name: {2}, QD Value: {3}", _
                token.Name, qdi.Segment, qdi.Name, qdi.Value)
        Next
    Next
    
    // Show the qualification data for each
    // token in an AddInToken collection.
    foreach (AddInToken token in tokens)
    {
        foreach (QualificationDataItem qdi in token)
        {
            Console.WriteLine("{0} {1}\n\t QD Name: {2}, QD Value: {3}",
                token.Name,
                qdi.Segment, 
                qdi.Name, 
                qdi.Value);
        }
    }
    
    
    참고참고

    추가 기능 모델은 추가 기능의 호스트 뷰에 적용되는 정규화 데이터를 사용하지 않습니다.따라서 정규화 데이터를 열거할 때 Segment 속성이 AddInSegmentType.HostViewOfAddIn인 항목을 찾을 수 없습니다.

참고 항목

개념

추가 기능 및 확장성