2016-02-03 5 views
1

Частичный метод в File2 никогда не вызывается. Как позвонить Init() в File2?Частичный метод не называется?

File1

public partial class frmMy001 : Form, ITab1View 
{ 
    public frmMy001() 
    { 
     Init(); 
    } 

    partial void Init(); 
} 

File2

public partial class frmMy001 : Form, ITab2View 
{ 
    partial void Init(); 

    partial void Init() 
    { 
     ...// Breakpoint never hit 
    } 
} 
+1

Текущий код не может скомпилироваться, а «Частичный метод может не иметь нескольких определяющих деклараций». Пожалуйста, опубликуйте [mcve]. –

+0

@JonSkeet Фактически он компилируется на моем VS 2015. Однако удаление частичной подписи не удалось. – ca9163d9

+2

Это означает, что вы получили их в разных пространствах имен. (Это то, что было бы * полным * примером, было бы выделено.) Как другой способ продемонстрировать это, попробуйте добавить публичного участника в одну часть, а затем вызвать его из другой части - я подозреваю, что вы обнаружите, т. –

ответ

2

Удалить объявление в Файл

public partial class frmMy001 : Form, ITab2View 
{ 
    // partial void Init(); <-- remove this 

    partial void Init() 
    { 
     ...// Breakpoint never hit 
    } 
} 

Вы г частичные методы должны удовлетворять следующие условия:

  • Подпись в обеих частях частичного типа должна совпадать.
  • Метод должен возвращать пустоту.
  • Модификаторы доступа не допускаются. Частичные методы неявно закрыты.
+0

Лучше прокомментировать это, чтобы выделить то, о чем вы говорите, чем удалить его полностью. –

1

Подпись частичного метода должна быть объявлена ​​только в ОДНОЙ части частичного класса. Попробуйте удалить 'partial void Init();' объявление из файла2.

+0

Код, предоставленный OP, даже не компилируется ... –

Смежные вопросы