English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Classes et méthodes partielles (Partial) C#

En C#, l'on peut utiliser le mot-clé partial pour subdiviser la mise en œuvre des classes, des structures, des méthodes ou des interfaces dans plusieurs fichiers .cs. Lors de la compilation du programme, le compilateur fusionne toutes les mises en œuvre provenant de plusieurs fichiers .cs.

Voyons les fichiers employeeprops.cs et employeemethods.cs qui contiennent la classe Employee.

public partial class Employee
{
    public int EmpId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}
public partial class MyPartialClass
{
    public Employee(int Id, string name)
    {
        this.EmpId = Id;
        this.Name = name;
    }
    public void DisplayEmployeeInfo()
    {
        Console.WriteLine(this.EmpId + " " this.FirstName + " " + this.LastName);
    }
    public void Save(int id, string firstName, string lastName)
    {
        Console.WriteLine("Sauvegardé !");
    }
}

Dans l'exemple ci-dessus, EmployeeProps.cs contient les propriétés de la classe Employee, tandis que employeememethods.cs contient toutes les méthodes de la classe Employee. Ces classes seront compilées en une seule classe Employee.

public class Employee
{
    public int EmpId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public Employee(int Id, string name)
    {
        this.EmpId = Id;
        this.Name = name;
    }
    public void DisplayEmployeeInfo()
    {
        Console.WriteLine(this.EmpId + " " this.FirstName + " " + this.LastName);
    }
    public void Save(int id, string firstName, string lastName)
    {
        Console.WriteLine("Sauvegardé !");
    }
}

Règles des classes partielles

  • Toutes les définitions de classes partielles doivent se trouver dans le même assembly et l'espace de noms.

  • Toutes les parties doivent avoir la même accessibilité, par exemple publique ou privée.

  • Si une partie est déclarée comme abstraite, finale ou de type de base, alors toute la déclaration de la classe est de type identique.

  • Différents fichiers partiels peuvent avoir des types de base différents, donc la classe finale héritera de tous les types de base.

  • Le modificateur partial ne peut apparaître qu'avant les mots-clés class, struct ou interface.

  • Permet l'encapsulation des types partiels.

Méthode partielle

Les classes ou les structures partielles peuvent contenir une méthode, qui peut être divisée en deux fichiers .cs distincts pour la classe ou la structure. Un des fichiers .cs doit contenir la signature de la méthode, tandis que l'autre peut contenir l'implémentation optionnelle de la méthode partielle. La déclaration et l'implémentation de la méthode doivent toutes deux avoir le mot-clé partial.

public partial class Employee
{
    public int EmpId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    partial void GenerateEmployeeId();
}
public partial class MyPartialClass
{
    partial void GenerateEmployeeId()
    {
        this.EmpId = random();
    }
}

En haut, le fichier employeeprops.cs contient la signature de la méthode DisplayEmployeeInfo, tandis que le fichier employeemethods.cs contient son implémentation. Le compilateur les fusionnera tous en un lors de la compilation.

Il nécessite l'inclusion de la signature de la méthode partielle, mais n'exige pas l'implémentation. Si la méthode est appelée mais non implémentée, il n'y aura pas d'erreur à la compilation ou à l'exécution.

Règles des méthodes partielles

  • Les méthodes partielles doivent utiliser la cléword partial et doivent retourner void.

  • Les méthodes partielles peuvent avoir des paramètres in ou ref sans paramètres out.

  • Les méthodes partielles sont des méthodes privées implicites, elles ne peuvent donc pas être virtuelles.

  • Les méthodes partielles peuvent être des méthodes statiques.

  • Les méthodes partielles peuvent être des méthodes génériques.