PolicyConversionContext Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define uma classe usada para recuperar asserções de associação nos metadados e para anexar a implementação de elementos de associação no escopo adequado.
public ref class PolicyConversionContext abstract
public abstract class PolicyConversionContext
type PolicyConversionContext = class
Public MustInherit Class PolicyConversionContext
- Herança
-
PolicyConversionContext
Exemplos
O exemplo de código a seguir mostra uma implementação do ImportPolicy método que grava todas as declarações de política no console. Os comentários de código descrevem como localizar uma declaração de política personalizada específica, criar e inserir um elemento de associação em implementação e remover a declaração da coleção.
public void ImportPolicy(MetadataImporter importer,
PolicyConversionContext context)
{
Console.WriteLine("The custom policy importer has been called.");
foreach (XmlElement assertion in context.GetBindingAssertions())
{
Console.WriteLine(assertion.NamespaceURI + " : " + assertion.Name);
// locate a particular assertion by Name and NamespaceURI
XmlElement customAssertion = context.GetBindingAssertions().Find(name1, ns1);
if (customAssertion != null)
{
// Found assertion; remove from collection.
context.GetBindingAssertions().Remove(customAssertion);
Console.WriteLine(
"Removed our custom assertion from the imported "
+ "assertions collection and inserting our custom binding element."
);
// Here if you find the custom policy assertion that you are looking for,
// add the custom binding element that handles the functionality that the policy indicates.
// Attach it to the PolicyConversionContext.BindingElements collection.
// For example, if the custom policy had a "speed" attribute value:
/*
string speed
= customAssertion.GetAttribute(SpeedBindingElement.name2, SpeedBindingElement.ns2);
SpeedBindingElement e = new SpeedBindingElement(speed);
context.BindingElements.Add(e);
*/
}
// write assertion name in red.
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(assertion.NamespaceURI + " : " + assertion.Name);
//write contents in gray.
Console.WriteLine(assertion.OuterXml);
Console.ForegroundColor = ConsoleColor.Gray;
}
}
O exemplo de código a seguir mostra como registrar IPolicyImportExtension implementações usando a <policyImporters>
seção de configuração.
<configuration>
<system.serviceModel>
<client>
<metadata>
<policyImporters>
<extension type="CustomPolicyImporter, assembly"/>
</policyImporters>
</metadata>
</client>
</system.serviceModel>
</configuration>
O exemplo de código a seguir demonstra como um elemento de associação personalizado pode implementar IPolicyExportExtension para anexar uma declaração de política personalizada às declarações de associação.
public class MyBindingElement : BindingElement, IPolicyExportExtension
{
// BindingElement implementation . . .
public void ExportPolicy(
MetadataExporter exporter, PolicyConversionContext context)
{
XmlDocument xmlDoc = new XmlDocument();
XmlElement xmlElement =
xmlDoc.CreateElement("MyPolicyAssertion");
context.GetBindingAssertions().Add(xmlElement);
}
// Note: All custom binding elements must return a deep clone
// to enable the run time to support multiple bindings using the
// same custom binding.
public override BindingElement Clone()
{
// this is just a placeholder
return null;
}
// Call the inner property.
public override T GetProperty<T>(BindingContext context)
{
return context.GetInnerProperty<T>();
}
}
public class Program {
public static void Main(string[] args) {
EndpointAddress address =
new EndpointAddress("http://localhost/metadata");
CustomBinding customBinding =
new CustomBinding(new BasicHttpBinding());
customBinding.Elements.Add(new MyBindingElement());
ContractDescription contract =
ContractDescription.GetContract(typeof(MyContract));
ServiceEndpoint endpoint =
new ServiceEndpoint(contract, customBinding, address);
MetadataExporter exporter = new WsdlExporter();
exporter.ExportEndpoint(endpoint);
}
}
Comentários
Uma implementação do PolicyConversionContext é passada para IPolicyExportExtension e IPolicyImportExtension objetos para exportar e importar, respectivamente, declarações de política personalizadas de e para metadados. Na exportação, uma coleção de declarações de política é recuperada para adicionar declarações personalizadas. Na importação, as declarações são recuperadas para importar os específicos e configurar os elementos de associação adequadamente.
O GetBindingAssertions método retorna todas as declarações de política que são para a associação.
O GetFaultBindingAssertions método retorna todas as declarações de política para uma mensagem de falha específica.
O GetMessageBindingAssertions método retorna todas as declarações de política para uma mensagem específica.
O GetOperationBindingAssertions método retorna todas as declarações de política para uma operação específica.
A BindingElements propriedade obtém os elementos de associação para a associação que está sendo descrita ou configurada.
A Contract propriedade obtém a descrição do contrato para a qual a associação está sendo descrita ou configurada.
Construtores
PolicyConversionContext(ServiceEndpoint) |
Inicializa uma nova instância da classe PolicyConversionContext usando o ponto de extremidade especificado. |
Propriedades
BindingElements |
Obtém uma coleção de elementos de associação aos quais elementos de associação personalizados que implementam asserções de política são adicionados. |
Contract |
Obtém o contrato para o ponto de extremidade. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetBindingAssertions() |
Obtém uma coleção de asserções de política de metadados. |
GetFaultBindingAssertions(FaultDescription) |
Retorna uma coleção de asserções de política para a falha SOAP especificada. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetMessageBindingAssertions(MessageDescription) |
Obtém uma coleção de asserções de política para uma mensagem. |
GetOperationBindingAssertions(OperationDescription) |
Retorna uma coleção de asserções de política para a operação especificada. |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |