在C#中调用部分方法

时间:2012-02-28 16:42:46

标签: c#-3.0 partial-classes partial-methods

我最近正在挖掘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上读到,在运行时,编译器将类编译成一个,在这种情况下编译器也应该获得“方法”方法实现,那么为什么它不允许我在main方法中调用“Method”方法,任何人都可以纠正我,如果我错了,并告诉我为什么我无法在main中调用这个部分方法。

3 个答案:

答案 0 :(得分:3)

来自MSDN

  

不允许使用访问修饰符或属性。部分方法是   隐含地私人。

这是一个私有方法,所以你不能从main调用它。

答案 1 :(得分:0)

是的,我们无法从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(); } } 拨打电话。问题不是部分方法问题是没有类中的说明符的方法私有方法只能在类内调用私有方法。

尝试在Partial类中创建一个新的公共方法:

angular.module('app')
.directive('customDirective', function ($compile) {
return {
  restrict: 'A',
  replace: false, 
  terminal: true,
  priority: 1000,
  compile: function compile(element, attrs) {
    element.attr('required', 'required');
    element.removeAttr("custom-directive"); //remove the attribute to avoid indefinite loop
    $compile(element)(scope);
  }
};
});

答案 2 :(得分:0)

您可以在定义方法的构造函数中调用部分方法。

例如

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

就是这样......现在执行你的代码并查看结果..

  • 输出

调用部分方法