Udostępnij za pośrednictwem


x:FactoryMethod, dyrektywa

Określa metodę inną niż konstruktor, którego procesor XAML powinien użyć do zainicjowania obiektu po rozpoznaniu jego typu kopii zapasowej.

Użycie atrybutów XAML, brak argumentów x:Argumenty

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

Użycie atrybutu XAML, x:Argumenty jako elementy

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

Wartości XAML

Wartość Opis
methodname Nazwa metody ciągu metody wywoływanej przez procesory XAML w celu zainicjowania wystąpienia określonego jako object. Zobacz uwagi.
oneOrMoreObjectElements Co najmniej jeden element obiektu dla obiektów określających parametry metody fabryki. Kolejność jest znacząca; oznacza kolejność przekazywania argumentów do metody factory.

Uwagi

Jeśli methodname jest metodą wystąpienia, nie można jej zakwalifikować.

Metody statyczne jako metody fabryczne są obsługiwane. Jeśli methodname jest metodą statyczną, methodname jest dostarczana jako kombinacja typeName.methodName, gdzie typeName nazwy klasy definiującej metodę fabryki statycznej. typeName można zakwalifikować prefiks, jeśli odwołuje się do typu w mapowanych xmlnach. typeName może być innym typem niż typeof(object).

Metoda fabryki musi być zadeklarowaną publiczną metodą typu, który zwraca odpowiedni element obiektu.

Metoda fabryki musi zwrócić wystąpienie, które można przypisać do odpowiedniego obiektu. Metody fabryki nigdy nie powinny zwracać wartości null.

x:Arguments działa na zasadzie najlepszego dopasowania do podpisów metod fabrycznych. Dopasowanie oblicza najpierw liczbę parametrów. Jeśli istnieje więcej niż jedno możliwe dopasowanie dla liczby parametrów, typ parametru jest obliczany, a najlepsze dopasowanie jest określane. Jeśli po tej fazie oceny nadal występuje niejednoznaczność, zachowanie procesora XAML jest niezdefiniowane.

Użycie elementu x:FactoryMethod nie jest użyciem elementu właściwości w typowym sensie, ponieważ znacznik dyrektywy nie odwołuje się do typu elementu zawierającego obiekt. Oczekuje się, że użycie elementów jest mniej powszechne niż użycie atrybutów. x:Arguments (użycie atrybutu lub elementu) może być używane wraz z użyciem elementu x:FactoryMethod, ale nie jest to specjalnie pokazane w sekcjach Użycie.

x:FactoryMethod jako element musi poprzedzać wszelkie inne elementy właściwości, musi poprzedzać wszystkie x:Arguments również podane jako elementy i musi poprzedzać dowolną zawartość/tekst wewnętrzny/tekst inicjowania.

Zobacz też