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


person Abbas    schedule 28.02.2012    source источник


Ответы (3)


Из MSDN

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

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

person Becuzz    schedule 28.02.2012
comment
Уверены ли вы? Мы не можем вызвать его из Main() - person Balaji; 17.12.2014

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

Например

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

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

  • Вывод

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

person Sankar Sai    schedule 11.10.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(); 
  }
}
person Ankur Bhutani    schedule 22.07.2015