This documentation is archived and is not being maintained.

XamlSchemaContext Class

Defines a reusable context for interpreting or mapping XAML types, and the types in the assemblies that underlie them.


Namespace:  System.Xaml
Assembly:  System.Xaml (in System.Xaml.dll)

public class XamlSchemaContext

The XamlSchemaContext type exposes the following members.

Public methodXamlSchemaContext()Initializes a new instance of the XamlSchemaContext class.
Public methodXamlSchemaContext(IEnumerable<Assembly>)Initializes a new instance of the XamlSchemaContext class, based on a set of reference assemblies.
Public methodXamlSchemaContext(XamlSchemaContextSettings)Initializes a new instance of the XamlSchemaContext class, based on a settings object.
Public methodXamlSchemaContext(IEnumerable<Assembly>, XamlSchemaContextSettings)Initializes a new instance of the XamlSchemaContext class, based on a set of reference assemblies and a settings object.

Public propertyFullyQualifyAssemblyNamesInClrNamespacesGets a value that specifies whether a XAML schema and its context use fully qualified assembly names in the values that are returned by the lookup API.
Public propertyReferenceAssembliesGets an enumerable set of reference assemblies for the XAML schema context.
Public propertySupportMarkupExtensionsWithDuplicateArityGets a value that specifies whether a XAML schema and its context support markup extensions that have two constructors with the same arity (number of input parameters).

Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeProvides a nonstandard Finalize implementation that does not invoke Dispose. (Overrides Object.Finalize().)
Public methodGetAllXamlNamespacesSearches the assemblies that are held by this XamlSchemaContext and returns a set of namespaces.
Public methodGetAllXamlTypesSearches the assemblies that are held by this XamlSchemaContext and returns a set of types from the specified XAML namespace.
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetPreferredPrefixGets a string that is reported as the preferred prefix for consumers to use when they map the specified XAML namespace.
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodGetValueConverter<TConverterBase>Returns a value converter that can convert to the requested targetType.
Public methodGetXamlDirectiveReturns a XamlDirective value that represents a directive, either for the XAML language or for a particular implementation.
Public methodGetXamlType(Type)Returns a XamlType that is based on a CLR type identifier.
Public methodGetXamlType(XamlTypeName)Returns a XamlType that is based on a XAML system type name.
Protected methodGetXamlType(String, String, XamlType[])Returns a XamlType that is based on a XAML namespace and a string for the type name. This signature can specify the type arguments for cases where the desired type is a generic type.
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnAssemblyResolveCalled when operations use this schema context to resolve an assembly that is required in order to resolve the XAML namespaces that it contains.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodTryGetCompatibleXamlNamespaceReturns the success or failure of a request for a compatible XAML namespace. A successful request reports that XAML namespace as an out parameter.

A XAML schema context provides a layer of abstraction between a schema or vocabulary for XAML, and a specific parser implementation. By inserting the concept of a schema context, the schema can be used with different XAML parsers, and the schema context fills in the details that are needed to interact with a specific XAML parser. For example, the XAML schema context provides query APIs that relate to XAML concepts or to the CLR binding to the XAML type system. The XAML schema context is also responsible for maintaining the assembly list of loaded assemblies, which defines where a XAML parser looks for backing types.

Notes to Implementers

In an AppDomain, a XamlSchemaContext can be shared between multiple callers, which include both full and partial trust callers. This situation exists in frameworks such as WPF, which provide partial-trust access to XAML loading for portions of the WPF application model. The default XamlSchemaContext implementation provides safeguards in this scenario by keeping all its properties and settings immutable. Derived implementations should also consider following this model of immutability for properties and settings of a XAML schema context.

The XamlSchemaContext base class is designed so that lookups have no externally observable side effects. The types that are referenced by XamlSchemaContext APIs in the base class, such as XamlType or XamlMember, also produce no side effects from lookups. All data that is needed to make a schema determination should be available from the construction and settings of the AppDomain. Notice that no lookup APIs rely on explicitly passed-in services; their input relies on string input only.

The XamlSchemaContext base class, and XamlType and XamlMember are all thread safe in their base implementations. If you derive from XamlSchemaContext or derive XAML type system classes such as XamlType and XamlMember , you can choose whether your classes will behave as thread safe.

.NET Framework

Supported in: 4

.NET Framework Client Profile

Supported in: 4

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.