Поделиться через


Директива x:FactoryMethod

Указывает метод, отличный от конструктора, который обработчик XAML должен использовать для инициализации объекта после разрешения его резервного типа.

Использование атрибутов XAML, без x:Arguments

<object x:FactoryMethod="methodname"...>  
  ...  
</object>  

Использование атрибутов XAML, x:Arguments в качестве элементов

<object x:FactoryMethod="methodname"...>  
  <x:Arguments>  
    oneOrMoreObjectElements  
  </x:Arguments>  
</object>  

Значения XAML

Ценность Описание
methodname Строковое имя метода, вызываемого обработчиками XAML для инициализации экземпляра, указанного как object. См. примечания.
oneOrMoreObjectElements Один или несколько элементов объекта для объектов, определяющих параметры метода фабрики. Порядок имеет значительное значение; он обозначает порядок, в котором аргументы должны передаваться в метод фабрики.

Замечания

Если methodname является методом экземпляра, он не может быть квалифицирован.

Поддерживаются статические методы в качестве методов фабрики. Если methodname является статическим методом, methodname предоставляется в виде сочетания typeName.methodName, где typeName именует класс, определяющий статический метод фабрики. typeName может быть квалифицированным префиксом, если ссылается на тип в сопоставленных xmlns. typeName может отличаться от типа typeof(object).

Метод фабрики должен быть объявлен открытым методом типа, который поддерживает соответствующий элемент объекта.

Метод фабрики должен возвращать экземпляр, который можно назначить соответствующему объекту. Методы фабрики никогда не должны возвращать значение NULL.

x:Arguments работает в принципе лучшего соответствия подписям методов фабрики. Сопоставление вычисляет число параметров первым. Если для счетчика параметров существует несколько возможных совпадений, то будет вычисляется тип параметра и определяется лучшее совпадение. Если по-прежнему существует неоднозначность после этого этапа оценки, поведение процессора XAML не определено.

Использование элемента x:FactoryMethod не является использованием элемента свойства в обычном смысле, так как разметка директивы не ссылается на тип элемента объекта. Ожидается, что использование элементов менее распространено, чем использование атрибутов. x:Arguments (использование атрибутов или элементов) можно использовать вместе с использованием x:FactoryMethod элементов, но это не отображается в разделах "Использование".

x:FactoryMethod как элемент должен предшествовать любым другим элементам свойства, должен предшествовать любым x:Arguments также предоставленным в качестве элементов и должен предшествовать любому тексту содержимого/ внутреннего текста и инициализации.

См. также

  • Директива x:Arguments