방법: 정규화 데이터 사용
업데이트: 2007년 11월
하나 이상의 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인 항목을 찾을 수 없습니다.