如何:使用限定数据
任何相关意图都可以通过将一个或多个 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 的项。