PolicyConversionContext Klas

Definitie

Definieert een klasse die wordt gebruikt voor het ophalen van bindingsverklaringen in metagegevens en voor het koppelen van de implementatie van bindingselementen op het juiste bereik.

public ref class PolicyConversionContext abstract
public abstract class PolicyConversionContext
type PolicyConversionContext = class
Public MustInherit Class PolicyConversionContext
Overname
PolicyConversionContext

Voorbeelden

In het volgende codevoorbeeld ziet u een implementatie van de ImportPolicy methode waarmee alle beleidsverklaringen naar de console worden geschreven. In de codeopmerkingen wordt beschreven hoe u een specifieke aangepaste beleidsverklaring kunt vinden, een bindingselement maakt en invoegt en de assertie uit de verzameling verwijdert.

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;
    }
}

In het volgende codevoorbeeld ziet u hoe u implementaties registreert IPolicyImportExtension met behulp van de <policyImporters> configuratiesectie.

<configuration>
  <system.serviceModel>
    <client>
      <metadata>
        <policyImporters>
          <extension type="CustomPolicyImporter, assembly"/>
        </policyImporters>
      </metadata>
    </client>
  </system.serviceModel>
</configuration>

In het volgende codevoorbeeld ziet u hoe een aangepast bindingselement kan implementeren IPolicyExportExtension om een aangepaste beleidsverklaring toe te voegen aan de bindingsverklaringen.

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);
    }
}

Opmerkingen

Er wordt een implementatie van de PolicyConversionContext implementatie doorgegeven aan IPolicyExportExtension en IPolicyImportExtension objecten om respectievelijk aangepaste beleidsverklaringen van en naar metagegevens te exporteren en importeren. Bij het exporteren wordt een verzameling beleidsverklaringen opgehaald om aangepaste asserties toe te voegen. Bij het importeren worden de asserties opgehaald om specifieke asserties te importeren en bindingselementen op de juiste manier te configureren.

  • De GetBindingAssertions methode retourneert alle beleidsverklaringen die voor de binding zijn.

  • De GetFaultBindingAssertions methode retourneert alle beleidsverklaringen voor een specifiek foutbericht.

  • De GetMessageBindingAssertions methode retourneert alle beleidsverklaringen voor een specifiek bericht.

  • De GetOperationBindingAssertions methode retourneert alle beleidsverklaringen voor een specifieke bewerking.

  • De BindingElements eigenschap haalt de bindingselementen op voor de binding die wordt beschreven of geconfigureerd.

  • De Contract eigenschap haalt de contractbeschrijving op waarvoor de binding wordt beschreven of geconfigureerd.

Constructors

Name Description
PolicyConversionContext(ServiceEndpoint)

Initialiseert een nieuw exemplaar van de PolicyConversionContext klasse met behulp van het opgegeven eindpunt.

Eigenschappen

Name Description
BindingElements

Hiermee haalt u een verzameling bindingselementen op waaraan aangepaste bindingselementen die beleidsverklaringen implementeren, worden toegevoegd.

Contract

Hiermee haalt u het contract voor het eindpunt op.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetBindingAssertions()

Hiermee haalt u een verzameling beleidsverklaringen op uit metagegevens.

GetFaultBindingAssertions(FaultDescription)

Retourneert een verzameling beleidsverklaringen voor de opgegeven SOAP-fout.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetMessageBindingAssertions(MessageDescription)

Hiermee haalt u een verzameling beleidsverklaringen voor een bericht op.

GetOperationBindingAssertions(OperationDescription)

Retourneert een verzameling beleidsverklaringen voor de opgegeven bewerking.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op