PolicyConversionContext Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje třídu použitou k načtení kontrolních výrazů vazby v metadatech a k připojení implementačních prvků vazby v příslušném oboru.
public ref class PolicyConversionContext abstract
public abstract class PolicyConversionContext
type PolicyConversionContext = class
Public MustInherit Class PolicyConversionContext
- Dědičnost
-
PolicyConversionContext
Příklady
Následující příklad kódu ukazuje implementaci ImportPolicy metody, která zapíše všechny kontrolní výrazy zásad do konzoly. Komentáře kódu popisují, jak vyhledat konkrétní kontrolní výraz vlastní zásady, vytvořit a vložit implementační prvek vazby a odebrat kontrolní výraz z kolekce.
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;
}
}
Následující příklad kódu ukazuje, jak zaregistrovat IPolicyImportExtension implementace pomocí oddílu <policyImporters>
konfigurace.
<configuration>
<system.serviceModel>
<client>
<metadata>
<policyImporters>
<extension type="CustomPolicyImporter, assembly"/>
</policyImporters>
</metadata>
</client>
</system.serviceModel>
</configuration>
Následující příklad kódu ukazuje, jak může vlastní element vazby implementovat IPolicyExportExtension pro připojení vlastního kontrolního výrazu zásad k kontrolním výrazům vazby.
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);
}
}
Poznámky
Implementace objektu PolicyConversionContext je předána IPolicyExportExtension a IPolicyImportExtension objekty k exportu a importu, v uvedeném pořadí vlastních kontrolních výrazů zásad do a z metadat. Při exportu se načte kolekce kontrolních výrazů zásad, aby bylo možné přidat vlastní kontrolní výrazy. Při importu se kontrolní výrazy načtou, aby se importovaly konkrétní a správně konfigurovaly prvky vazby.
Metoda GetBindingAssertions vrátí všechny kontrolní výrazy zásad, které jsou pro vazbu.
Metoda GetFaultBindingAssertions vrátí všechny kontrolní výrazy zásad pro konkrétní chybovou zprávu.
Metoda GetMessageBindingAssertions vrátí všechny kontrolní výrazy zásad pro konkrétní zprávu.
Metoda GetOperationBindingAssertions vrátí všechny kontrolní výrazy zásad pro konkrétní operaci.
Vlastnost BindingElements získá prvky vazby pro vazbu, která je popsána nebo nakonfigurována.
Vlastnost Contract získá popis kontraktu, pro který se vazba popisuje nebo konfiguruje.
Konstruktory
PolicyConversionContext(ServiceEndpoint) |
Inicializuje novou instanci PolicyConversionContext třídy pomocí zadaného koncového bodu. |
Vlastnosti
BindingElements |
Získá kolekci vazeb prvků, do kterých jsou přidány vlastní prvky vazby, které implementují kontrolní výrazy zásad. |
Contract |
Získá kontrakt pro koncový bod. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetBindingAssertions() |
Získá kolekci kontrolních výrazů zásad z metadat. |
GetFaultBindingAssertions(FaultDescription) |
Vrátí kolekci kontrolních výrazů zásad pro zadanou chybu SOAP. |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetMessageBindingAssertions(MessageDescription) |
Získá kolekci kontrolních výrazů zásad pro zprávu. |
GetOperationBindingAssertions(OperationDescription) |
Vrátí kolekci kontrolních výrazů zásad pro zadanou operaci. |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |