次の方法で共有


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 objectとして指定されたインスタンスを初期化するために XAML プロセッサが呼び出すメソッドの文字列メソッド名。 「解説」を参照してください。
oneOrMoreObjectElements ファクトリ メソッド パラメーターを指定するオブジェクトの 1 つ以上のオブジェクト要素。 順序は重要です。これは、引数をファクトリ メソッドに渡す順序を示します。

備考

methodname がインスタンス メソッドの場合は、修飾できません。

ファクトリ メソッドとしての静的メソッドがサポートされています。 methodname が静的メソッドの場合、methodnametypeName.methodName の組み合わせとして提供されます。ここで、静的ファクトリ メソッドを定義するクラス typeName 名前を付けます。 typeName は、マップされた xmlns 内の型を参照する場合にプレフィックス修飾できます。 typeName は、typeof(object)とは異なる型にすることができます。

ファクトリ メソッドは、関連するオブジェクト要素をバックする型の宣言されたパブリック メソッドである必要があります。

ファクトリ メソッドは、関連するオブジェクトに割り当て可能なインスタンスを返す必要があります。 ファクトリ メソッドは null を返すべきではありません。

x:Arguments は、ファクトリ メソッドのシグネチャに最適な原則に基づいて動作します。 照合では、最初にパラメーター数が評価されます。 パラメーター数に対して複数の一致が可能な場合は、パラメーターの型が評価され、最適な一致が決定されます。 この評価フェーズの後にあいまいさが残っている場合、XAML プロセッサの動作は未定義です。

ディレクティブ マークアップは、含まれるオブジェクト要素の型を参照しないため、x:FactoryMethod 要素の使用法は、一般的な意味でのプロパティ要素の使用ではありません。 要素の使用は、属性の使用よりも一般的ではありません。 x:Arguments (属性または要素の使用法) は、x:FactoryMethod 要素の使用法と共に使用できますが、これは使用法のセクションには特に示されていません。

要素として x:FactoryMethod は、他のプロパティ要素の前に置く必要があります。また、要素としても提供される x:Arguments の前に置き、コンテンツ/内部テキスト/初期化テキストの前に置く必要があります。

関連項目

  • x:Arguments ディレクティブ を する