Appeler des méthodes partielles en C #
-
14-11-2019 - |
Question
Je creusais récemment sur de nouvelles méthodes partielles en C # 3.0, j'ai compris l'utilisation de la classe partielle, qu'il pourrait être repris en fichier multiple, contenant la définition et d'autres déclarations, mais je voulais savoir, j'ai créé une classe partielle comme ci-dessous :
in class1.cs
partial class A
{
partial void Method();
}
in class2.cs
partial class A
{
partial void Method()
{
Console.WriteLine("Hello World");
}
}
now in class3.cs
class MainClass
{
static void Main()
{
A obj = new A();
obj.Method(); //Here i cannot call the "Method" method.
}
}
Alors quelle utilisation de la création de méthode partielle, j'ai lu sur MSDN que, au moment de l'exécution, le compilateur compile la classe en un, dans ce cas, le compilateur devrait également obtenir l'implémentation de la méthode "Méthode", alors pourquoi cela ne me permet pas d'appeler le " Méthode "Méthode dans la méthode principale, quelqu'un peut-il me corriger si je me trompe et me dire pourquoi je ne suis pas en mesure d'appeler cette méthode partielle dans Main.
La solution
De MSDN
Aucun modificateur d'accès ou attribution n'est autorisé. Les méthodes partielles sont implicitement privées.
C'est une méthode privée, vous ne pouvez donc pas l'appeler depuis Main.
Autres conseils
Vous pouvez appeler une méthode partielle à l'intérieur du constructeur où la méthode est définie.
Par exemple
public partial class classA
{
partial void mymethod();
}
public partial class classA
{
partial void mymethod()
{
Console.WriteLine("Invoking partial method");
}
public ClassA()
{
mymethod();
}
}
public class MainClass
{
static void Main()
{
ClassA ca=new ClassA();
}
}
C'est tout ... exécutez votre code et voyez le résultat.
- Production
Invoquer la méthode partielle
Oui, nous ne pouvons pas l'appeler à partir de Main()
. Le problème n'est pas une méthode partielle Le problème est la méthode sans spécificateur dans une classe est une méthode privée et privé peut être appelée à l'intérieur de la classe uniquement.
Essayez de créer une nouvelle méthode publique en classe partielle:
partial class A
{
partial void Method();
}
partial class A
{
partial void Method()
{
Console.WriteLine("Hello World");
}
public void Study()
{
Console.WriteLine("I am studying");
Method();
}
}
class MainClass
{
static void Main()
{
A obj = new A();
obj.Study();
}
}