asp.net: частичные классы и наследование - PullRequest
14 голосов
/ 26 января 2009

У меня есть класс, разделенный на два файла. Один из них сгенерирован, другой содержит несгенерированный материал.

Я хочу, чтобы мой класс наследовал от базового класса. Нужно ли оба файла наследовать? Или класс будет наследовать от базового класса, если либо частичный класс

В сгенерированном foo.vb:

Partial Public Class Foo Inherits BaseClass

В созданном вручную файле foo.vb:

Partial Public Class Foo

Кажется, это не имеет значения (в любом случае, согласно тому, что я вижу в Reflector).

Может кто-нибудь объяснить, как это работает? Компилятор просто объединяет два?

1 Ответ

14 голосов
/ 26 января 2009

Только один из двух должен наследовать.

Частичные классы - это просто хитрости компилятора. Ваши два файла скомпилированы обратно перед компиляцией. Это означает, что может быть указан только один базовый класс, как и в обычных классах.

Вы можете иметь это:

partial class one : base {}
partial class one {}

и это:

partial class one : base {}
partial class one : base {}

но не это

partial class one : fu {}
partial class two : bar {}

потому что последний объединяется в:

class one : fu, bar {} 

что незаконно. Однако вы можете смешивать и сочетать интерфейсы, как в обычном классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...