partial, méthode (référence C#)

La signature d’une méthode partielle est définie dans une partie d’un type partiel, tandis que son implémentation est définie dans une autre partie du type. Les méthodes partielles permettent aux concepteurs de classes de fournir des hooks de méthode, semblables aux gestionnaires d’événements, que les développeurs peuvent décider ou non d’implémenter. Si le développeur ne fournit pas d’implémentation, le compilateur supprime la signature au moment de la compilation. Les méthodes partielles obéissent aux conditions suivantes :

  • Les déclarations doivent commencer par le mot clé contextuel Partial.

  • Les signatures des deux parties du type partiel doivent correspondre.

Le mot clé n’est pas autorisé sur les partial constructeurs, les finaliseurs, les opérateurs surchargés, les déclarations de propriété ou les déclarations d’événements.

Une méthode partielle ne doit pas nécessairement avoir une implémentation dans les cas suivants :

  • Elle n’a pas de modificateur d’accessibilité (y compris le privépar défaut).

  • Elle retourne void.

  • Il n’a pas de paramètres de sortie .

  • Elle n’a aucun des modificateurs suivants : Virtual, override, sealed, Newou extern.

Toute méthode qui n’est pas conforme à toutes ces restrictions (par exemple, public virtual partial void la méthode) doit fournir une implémentation.

L’exemple suivant illustre une méthode partielle définie dans deux parties d’une classe partielle :

namespace PM
{
    partial class A
    {
        partial void OnSomethingHappened(string s);
    }

    // This part can be in a separate file.
    partial class A
    {
        // Comment out this method and the program
        // will still compile.
        partial void OnSomethingHappened(String s)
        {
            Console.WriteLine("Something happened: {0}", s);
        }
    }
}

Les méthodes partielles peuvent également être utiles en association avec les générateurs de code source. Par exemple, une expression régulière peut être définie à l’aide du modèle suivant :

[RegexGenerated("(dog|cat|fish)")]
partial bool IsPetMatch(string input);

Pour plus d’informations, consultez la page Classes et méthodes partielles.

Voir aussi