Директива 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
Стоимость | Description |
---|---|
methodname |
Имя строковое метода, вызываемого процессором XAML для инициализации экземпляра, который указан как object . См. заметки. |
oneOrMoreObjectElements |
Один или несколько элементов объектов для объектов, определяющих параметры фабричного метода. Элемент Order важен; он означает порядок передачи аргументов фабричному методу. |
Замечания
Если 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
, также предоставленному в виде элемента, и должен предшествовать любому содержимому, внутреннему тексту или тексту инициализации.
См. также
.NET Desktop feedback