StaticExtension.ProvideValue(IServiceProvider) Method

Definition

Returns an object value to set on the property where you apply this extension. For StaticExtension, the return value is the static value that is evaluated for the requested static member.

public:
 override System::Object ^ ProvideValue(IServiceProvider ^ serviceProvider);
public override object ProvideValue (IServiceProvider serviceProvider);
override this.ProvideValue : IServiceProvider -> obj
Public Overrides Function ProvideValue (serviceProvider As IServiceProvider) As Object

Parameters

serviceProvider
IServiceProvider

An object that can provide services for the markup extension. The service provider is expected to provide a service that implements a type resolver (IXamlTypeResolver).

Returns

The static value to set on the property where the extension is applied.

Exceptions

The member value for the extension is null at the time of evaluation.

Some part of the member string did not parse properly

-or-

serviceProvider did not provide a service for IXamlTypeResolver

-or-

member value did not resolve to a static member.

serviceProvider is null.

Remarks

This method supports XAML language features and is generally not intended to be called directly. The XAML processor implementation uses this method to correctly handle the x:Static extension values during object creation.

This implementation relies on services that are based on the passed serviceProvider. serviceProvider must not be null. The serviceProvider object is expected to return a service for IXamlTypeResolver. Under the normal scenario of use by the default XAML readers and XAML writers, a suitable service provider is available. An invalid XAML schema context might have the side effect of breaking type mapping and thus the IXamlTypeResolver service.

In .NET Framework 4, StaticExtension supports an alternate mode whereby it can return a static member based on Member being the simple member name and its owning type supplied as MemberType, rather than Member providing a full name in the form type.member. The type resolver still acts, but in this case the Member and MemberType are basically combined: memberFullName = MemberType.FullName + "." + Member.

Applies to