PolicyConversionContext Класс

Определение

Определяет класс, используемый для получения утверждений привязки в метаданных и присоединения реализации элементов привязки в соответствующей области.

public ref class PolicyConversionContext abstract
public abstract class PolicyConversionContext
type PolicyConversionContext = class
Public MustInherit Class PolicyConversionContext
Наследование
PolicyConversionContext

Примеры

В следующем примере кода показана реализация ImportPolicy метода, который записывает все утверждения политики в консоль. Примечания кода описывают, как найти определенное утверждение настраиваемой политики, создать и вставить элемент реализации привязки и удалить утверждение из коллекции.

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

В следующем примере кода показано, как зарегистрировать IPolicyImportExtension реализации с помощью <policyImporters> раздела конфигурации.

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

В следующем примере кода показано, как настраиваемый элемент привязки может реализовать IPolicyExportExtension для подключения утверждения пользовательской политики к утверждениям привязки.

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

Комментарии

Реализация PolicyConversionContext передается IPolicyExportExtension в IPolicyImportExtension объекты для экспорта и импорта, соответственно, утверждений настраиваемой политики в метаданные и из них. При экспорте коллекция утверждений политики извлекается для добавления пользовательских утверждений. При импорте утверждения извлекаются для импорта определенных элементов привязки и настройки элементов привязки соответствующим образом.

  • Метод GetBindingAssertions возвращает все утверждения политики, которые предназначены для привязки.

  • Метод GetFaultBindingAssertions возвращает все утверждения политики для определенного сообщения об ошибке.

  • Метод GetMessageBindingAssertions возвращает все утверждения политики для определенного сообщения.

  • Метод GetOperationBindingAssertions возвращает все утверждения политики для определенной операции.

  • Свойство BindingElements получает элементы привязки для описанной или настроенной привязки.

  • Свойство Contract получает описание контракта, для которого описана или настроена привязка.

Конструкторы

Имя Описание
PolicyConversionContext(ServiceEndpoint)

Инициализирует новый экземпляр класса с помощью указанной конечной PolicyConversionContext точки.

Свойства

Имя Описание
BindingElements

Возвращает коллекцию элементов привязки, к которым добавляются пользовательские элементы привязки, реализующие утверждения политики.

Contract

Возвращает контракт для конечной точки.

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetBindingAssertions()

Возвращает коллекцию утверждений политики из метаданных.

GetFaultBindingAssertions(FaultDescription)

Возвращает коллекцию утверждений политики для указанной ошибки SOAP.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetMessageBindingAssertions(MessageDescription)

Возвращает коллекцию утверждений политики для сообщения.

GetOperationBindingAssertions(OperationDescription)

Возвращает коллекцию утверждений политики для указанной операции.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к