Вызов частичных методов в C # - PullRequest
1 голос
/ 28 февраля 2012

Я недавно копался в новых частичных методах в c # 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, что во время выполнения компилятор компилирует класс в один, в этом случае компилятор должен также получить реализацию метода "Method", тогда почему он не позволяет мне вызовите метод «Метод» в методе main, может кто-нибудь исправить меня, если я ошибаюсь, и скажите мне, почему я не могу вызвать этот частичный метод в main.

Ответы [ 3 ]

3 голосов
/ 28 февраля 2012

С MSDN

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

Это закрытый метод, поэтому его нельзя вызывать из main.

0 голосов
/ 11 октября 2015

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

Например,

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

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

  • OutPut

Частичный метод вызова

0 голосов
/ 22 июля 2015

Да, мы не можем позвонить с 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(); 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...