PolicyConversionContext Sınıf

Tanım

Meta verilerde bağlama onaylarını almak ve uygun kapsamda bağlama öğeleri uygulamak için kullanılan bir sınıf tanımlar.

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

Örnekler

Aşağıdaki kod örneği, tüm ilke onaylarını konsola ImportPolicy yazan yönteminin bir uygulamasını gösterir. Kod açıklamaları belirli bir özel ilke onayını bulma, uygulayan bir bağlama öğesi oluşturup ekleme ve onaylama işlemini koleksiyondan kaldırmayı açıklar.

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

Aşağıdaki kod örneği, yapılandırma bölümünü kullanarak uygulamaların nasıl kaydedileceklerini IPolicyImportExtension <policyImporters> gösterir.

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

Aşağıdaki kod örneği, bir özel bağlama öğesinin bağlama onaylarına özel ilke onaylaması eklemek için nasıl uygulayabileceğini IPolicyExportExtension gösterir.

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

Açıklamalar

PolicyConversionContext uygulamasına geçirilir IPolicyExportExtension ve IPolicyImportExtension meta verilerde özel ilke onayları sırasıyla dışarı ve içeri aktarılmaya yönelik nesnelerdir. Dışarı aktarmada, özel onaylar eklemek için bir ilke onayları koleksiyonu alınır. İçeri aktarmada, belirli onayları içeri aktarmak ve bağlama öğelerini uygun şekilde yapılandırmak için onaylar alınır.

Oluşturucular

PolicyConversionContext(ServiceEndpoint)

Belirtilen uç noktayı kullanarak sınıfının yeni bir örneğini PolicyConversionContext başlatır.

Özellikler

BindingElements

İlke onaylarını uygulayan özel bağlama öğelerinin eklendiği bağlama öğeleri koleksiyonunu alır.

Contract

Uç noktanın sözleşmesini alır.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetBindingAssertions()

Meta verilerden ilke onayları koleksiyonunu alır.

GetFaultBindingAssertions(FaultDescription)

Belirtilen SOAP hatası için ilke onayları koleksiyonunu döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetMessageBindingAssertions(MessageDescription)

bir ileti için ilke onayları koleksiyonunu alır.

GetOperationBindingAssertions(OperationDescription)

Belirtilen işlem için bir ilke onayları koleksiyonu döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır