x:FactoryMethod (Directiva)

Especifica un método distinto de un constructor que debe usar un procesador XAML para inicializar un objeto después de resolver su tipo de respaldo.

Uso de atributos XAML, sin x:Arguments

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

Uso de atributos XAML, x:Arguments como elemento(s)

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

Valores XAML

Value Descripción
methodname Nombre del método de cadena de un método al que llaman los procesadores XAML para inicializar la instancia especificada como object. Vea la sección Comentarios.
oneOrMoreObjectElements Uno o varios elementos de objeto para los objetos que especifican parámetros de método de generador. El orden es significativo; significa el orden en el que se deben pasar argumentos al método de generador.

Comentarios

Si methodname es un método de instancia, no se puede calificar.

Se admiten métodos estáticos como métodos de generador. Si methodname es un método estático, methodname se proporciona como una combinación de typeName.methodName, donde typeName asigna un nombre a la clase que define el método de generador estático. typeName puede calificarse como prefijo si hace referencia a un tipo en un xmlns asignado. typeName puede ser un tipo diferente de typeof(object).

El método de generador debe ser un método público declarado del tipo que respalda al elemento de objeto correspondiente.

El método de generador debe devolver una instancia que se pueda asignar al objeto correspondiente. Los métodos de generador nunca deben devolver null.

x:Arguments funciona con un principio de mejor coincidencia para firmas de métodos de generador. La coincidencia evalúa primero el recuento de parámetros. Si hay más de una coincidencia posible para un recuento de parámetros, se evalúa el tipo de parámetro y se determina la mejor coincidencia. Si todavía hay ambigüedad después de esta fase de evaluación, el comportamiento del procesador XAML es no definido.

El uso de elementos x:FactoryMethod no es el uso de elementos de propiedad en el sentido típico, porque el marcado de directiva no hace referencia al tipo del elemento de objeto contenedor. Se espera que el uso de elementos sea menos común que el uso de atributos. x:Arguments (ya sea uso de atributos, o de elementos) se puede usar junto con el uso de elementos x:FactoryMethod, pero esto no se muestra específicamente en las secciones sobre el Uso.

x:FactoryMethod como elemento debe preceder a cualquier otro elemento de propiedad, debe preceder a cualquier x:Arguments proporcionado también como elementos y debe preceder a cualquier texto de contenido, texto interno o de inicialización.

Vea también