Вызов частичных методов в С#

Я недавно копался в новых частичных методах в С# 3.0, я понял использование частичного класса, что он может быть разбит на несколько файлов один содержит определение и другое объявление, но я хотел знать, я создал частичный класс, как показано ниже:

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.
 }
}

то зачем использовать частичный метод, я читаю в MSDN, что во время выполнения компилятор компилирует класс в один, в этом случае компилятор должен также получать реализацию метода "Метод", то почему он не позволяет мне называть " Метод "в основном методе, может ли кто-нибудь исправить меня, если я ошибаюсь, и скажите, почему я не могу назвать этот частичный метод в основном.

3 ответа

Из MSDN

Допускаются модификаторы доступа или атрибуты. Частичные методы неявно закрыты.

Это частный метод, поэтому вы не можете называть его из основного.


Да, мы не можем назвать это из Main(). Проблема не является проблемой частичного метода - метод без спецификатора в классе - частный и частный метод можно вызвать только внутри класса.

Попробуйте создать новый открытый метод в классе Partial:

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(); 
 }
}


Вы можете вызвать частичный метод внутри конструктора, где определяется метод.

Например

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();
 }
}

Чтобы он... теперь выполнил ваш код и посмотрел результат.

  • Вывод

Вызов частичного метода

licensed under cc by-sa 3.0 with attribution.