x:FactoryMethod 指令

指定 XAML 处理器在解析其后盾类型后应用于初始化对象的构造函数以外的方法。

XAML 属性用法,无 x:Arguments

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

XAML 属性用法,x:Arguments as Element(s)

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

XAML 值

价值 描述
methodname XAML 处理器调用的方法的字符串方法名称,以初始化指定为 object的实例。 请参阅“备注”。
oneOrMoreObjectElements 指定工厂方法参数的对象的一个或多个对象元素。 顺序非常重要;它表示应将参数传递到工厂方法的顺序。

言论

如果 methodname 是实例方法,则无法对其进行限定。

支持作为工厂方法的静态方法。 如果 methodname 是静态方法,则 methodname 作为 typeName.methodName 组合提供,其中 typeName 为定义静态工厂方法的类命名。 如果引用映射的 xmlns 中的类型,则可以 typeName 前缀限定。 typeName 的类型可能与 typeof(object)不同。

工厂方法必须是支持相关对象元素的类型声明的公共方法。

工厂方法必须返回可分配给相关对象的实例。 工厂方法不应返回 null。

x:Arguments 根据工厂方法签名的最佳匹配原则进行操作。 匹配首先计算参数计数。 如果参数计数有多个可能的匹配项,则计算参数类型并确定最佳匹配。 如果在此评估阶段之后仍存在歧义,则未定义 XAML 处理器行为。

x:FactoryMethod 元素用法不是典型意义上的属性元素用法,因为指令标记不引用包含的对象元素的类型。 预计元素用法不如属性用法常见。 x:Arguments(属性或元素用法)可与 x:FactoryMethod 元素用法一起使用,但“使用情况”部分中未具体显示。

x:FactoryMethod 元素必须位于任何其他属性元素之前,必须位于作为元素提供的任何 x:Arguments 前面,并且必须位于任何内容/内部文本/初始化文本之前。

另请参阅