Часткові класи та методи в Visual C # (Sharp)

За замовчуванням при створенні типу потрібна оголосити весь, тип в одному файлі, як одне ціле Наприклад, наступний клас потрібно оголосити в контексті єдино файлу:

class Example {

const int BaseValue = 10

public void AddNumbers(int valuel, int value2, ref int response) {

response = BaseValue + valuel + value2

}

}

Клас Example має один метод AddNumbers, який складає два числа з бовим значенням BaseValue Весь код зберігається в одному файлі Але припустимо, що ми хочемо автоматично згенерувати клас Example, і щоб він, у свою очедь, згенерував член даних BaseMember, але не метод AddNumbers Для цього первісний клас потрібно розбити на два окремих класу, де один клас яяется похідним від іншого:

class BaseGenerated {

protected const int BaseValue = 10

}

class Example : BaseGenerated {

public void AddNumbers(int valuel, int value2, ref int response) { response = BaseValue + valuel + value2

}

}

Такий підхід є прийнятним, і, найголовніше, він працює Клас BaseGenerated зберігається в одному файлі, а клас Example – в іншому Але даний підхід може бути злегка проблематичним, т к він має на увазі специфічну архітектуру, де один клас є похідним від іншого Альтернативним підходом було б використовувати ключове слово partial в контексті класу, як показано в наступному коді:

partial class BaseGenerated { const int BaseValue = 10

}

partial class Example {

public void AddNumbers(int valuel, int value2, ref int response) { response = BaseValue + valuel + value2

}

)

Ключове слово partial дозволяє визначити частковий клас, а весь клас буде розподілений по декількох файлах вихідного коду Таким чином, одну частину класу можна згенерувати автоматично, а іншу – запрограммірать вручну

До часткових класам предявляється вимога, щоб вони були повністю попрілості в збірці Частковий клас має сенс тільки для компілятора С #, але не для інфраструктури NET

Ключове слово partial можна також застосовувати для створення методів, які визначені в одному місці, а реалізовані в іншому Часткові методи можна рас-

сматривать як визначення методу абстрактного класу і реалізація його в цьому ж методі Далі наводиться приклад використання часткового класу:

partial class Example {

partial void AddNumbers(int valuel, int value2, ref int response)

public void MethodO { int response = 0

AddNumbers(1, 2, ref response) ConsoleWriteLine(&quotAdded numbers (&quot + response + &quot)&quot)

}

}

partial class Example {

partial void AddNumbers(int valuel, int value2, ref int response) { response = valuel + value2

}

}

Часткові методи визначаються в контексті часткового класу Частковий мод оголошується і позначається префіксним ідентифікатором partial в одній частині класу, а реалізується в іншій

Часткові методи, як і часткові класи, мають певні обмеження:

• вони повинні повертати тип void

• вони повинні бути оголошені як private

• методи можуть бути статичними і використовувати методи розширення

• в методах не можна використовувати ідентифікатор параметрів out

В цілому, використання часткових методів і класів не слід робити общрінятой практикою програмування, т к вони призначені для застосування в контексті автоматично генерованого коду При використанні в цьому контетом часткові методи і класи є відмінним рішенням

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*