Cómo: Usar datos de calificación
Actualización: noviembre 2007
Puede asignar datos de calificación a un segmento de la canalización para cualquier propósito; para ello, aplique uno o varios atributos QualificationDataAttribute al segmento. Cada atributo especifica un par nombre/valor sencillo de datos de cadena. Por ejemplo, puede indicar que un complemento debería activarse con plena confianza especificando el par nombre/valor "Security" y "FullTrust". Del mismo modo, puede indicar que un segmento de la canalización debería estar aislado en su propio proceso especificando el par nombre/valor "Isolation" y "NewProcess".
Para aplicar los datos de calificación a un segmento de la canalización
Utilice el atributo 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 {
Para determinar los datos de calificación de un determinado segmento de la canalización
Utilice la propiedad QualificationData en un objeto AddInToken para obtener un diccionario de segmentos y los datos de calificación asociados con el token; a continuación, utilice el valor AddInSegmentType adecuado para obtener un diccionario que contenga los pares nombre/valor que conforman los datos de calificación del segmento deseado.
' 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.");
Si no existen datos de calificación para un segmento, su diccionario de pares nombre/valor estará vacío.
Nota: El modelo de complementos no usa los datos de calificación que se aplican a la vista de host del complemento. Como resultado, el diccionario de AddInSegmentType.HostViewOfAddIn siempre está vacío.
Para mostrar los datos de calificación de todos los segmentos de la canalización
Enumere el objeto AddInToken como si se tratara de una colección de estructuras 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); } }
Nota: El modelo de complementos no usa los datos de calificación que se aplican a la vista de host del complemento. Como resultado, al enumerar los datos de calificación, no encontrará ningún elemento cuya propiedad Segment sea AddInSegmentType.HostViewOfAddIn.