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

Указывает метод, отличный от конструктора, который обработчик XAML должен использовать для инициализации объекта после разрешения его резервного типа.Specifies a method other than a constructor that a XAML processor should use to initialize an object after resolving its backing type.

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

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

Использование атрибута XAML, x:Arguments как элемент (ы)XAML Attribute Usage, x:Arguments as Element(s)

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

Значения XAMLXAML Values

methodname Строковое имя метода, вызывающего обработчики XAML для инициализации экземпляра, указанного как object .The string method name of a method that XAML processors call to initialize the instance specified as object. См. заметки.See Remarks.
oneOrMoreObjectElements Один или несколько объектных элементов для объектов, задающих параметры метода фабрики.One or more object elements for objects that specify factory method parameters. Порядок важен; Он указывает порядок, в котором аргументы должны передаваться в фабричный метод.Order is significant; it signifies the order in which arguments should be passed to the factory method.

КомментарииRemarks

Если methodname является методом экземпляра, он не может быть квалифицирован.If methodname is an instance method, it cannot be qualified.

Поддерживаются статические методы в качестве фабричных методов.Static methods as factory methods are supported. Если methodname является статическим методом, methodname предоставляется в виде typeName.methodName сочетания, где typeName присваивает имя классу, определяющему статический метод фабрики.If methodname is a static method, methodname is provided as a typeName.methodName combination, where typeName names the class that defines the static factory method. typeName может быть уточнен префиксом, если ссылается на тип в сопоставленном xmlns.typeName can be prefix-qualified if referring to a type in a mapped xmlns. typeName тип может отличаться от типа typeof(object) .typeName can be a different type than typeof(object).

Фабричный метод должен быть объявлен открытым методом типа, который создает соответствующий элемент объекта.The factory method must be a declared public method of the type that backs the relevant object element.

Метод фабрики должен возвращать экземпляр, который может быть назначен соответствующему объекту.The factory method must return an instance that is assignable to the relevant object. Фабричные методы никогда не должны возвращать значение null.Factory methods should never return null.

x:Arguments работает с принципом наилучшего соответствия для сигнатур методов фабрики.x:Arguments operates on a principle of best match for signatures of factory methods. При сопоставлении сначала вычисляется число параметров.Matching evaluates the parameter count first. Если для числа параметров существует несколько возможных совпадений, тип параметра вычисляется, и определяется наилучшее соответствие.If there is more than one possible match for a parameter count, parameter type is then evaluated and best match is determined. Если после этого этапа ознакомления по-прежнему возникает неоднозначность, поведение обработчика XAML не определено.If there is still ambiguity after this phase of evaluation, XAML processor behavior is undefined.

x:FactoryMethodИспользование элемента не является элементом свойства в типичном смысле, поскольку разметка директивы не ссылается на тип содержащего его элемента.The x:FactoryMethod element usage is not property element usage in the typical sense, because the directive markup does not reference the containing object element's type. Предполагается, что использование элементов менее распространено, чем использование атрибута.It is expected that element usage is less common than attribute usage. x:Arguments (использование атрибута или элемента) можно использовать вместе с x:FactoryMethod использованием элемента, но это не показано в разделе Использование.x:Arguments (either attribute or element usage) can be used along with x:FactoryMethod element usage, but this is not specifically shown in the Usage sections.

x:FactoryMethod Поскольку элемент должен предшествовать любым другим элементам свойств, должен предшествовать любому из них x:Arguments , кроме элементов, и должен предшествовать любому содержимому, внутреннему тексту или тексту инициализации.x:FactoryMethod as an element must precede any other property elements, must precede any x:Arguments also provided as elements, and must precede any content/inner text/initialization text.

См. такжеSee also