Можно ли в C# описывать один класс в двух файлах?

stm2388838

сабж

freezer

нет

stm2388838

спасибо

xz_post

В следующей версии .NET Framework (1.2) & C# 2.0 это будет возможно при помощи ключевого слова partial

freezer

а смысл?..
или они решили окончательно вернуться к c++?..

stm2388838

нормально, пусть будет
не в этом главное отличие C#

freezer

просто это усложнит парсеры, тот же intelly-sence будет сильнее тормозить и глючить...
to : а нормальный препроцессор a-la c++ они ввести не собираются?..

xz_post


В то время как размещение всего исходного кода для типа в отдельный файл является хорошей практикой программирования, иногда тип настолько велик, что это требование становится невыполнимым. Более того, разработчики часто используют генераторы исходного кода для создания исходной структуры приложения, а затем дополняют ее. К сожалению, при последующих выпусках исходного кода, существующие изменения перезаписываются.
Неполные типы (Partial types) обеспечивают возможность разбивать классы, структуры и интерфейсы на множество частей, хранящихся в различных исходных файлах, для облегчения разработки и эксплуатации. Кроме того, неполные типы позволяют разделение сгенерированных машиной и написанных пользователем частей типов, таким образом, становится легче дополнять код, сгенерированный инструментальным средством.
При определении типа в нескольких частях используется новый модификатор типа — partial. Далее приведен пример неполного класса, который реализован в двух частях. Эти две части могут находиться в различных исходных файлах, потому что первая часть сгенерирована инструментом преобразования данных базы данных, а вторая часть написана вручную:
public partial class Customer
{
private int id;
private string name;
private string address;
private List<Order> orders;
public Customer {
...
}
}
public partial class Customer
{
public void SubmitOrder(Order order) {
orders.Add(order);
}
public bool HasOutstandingOrders {
return orders.Count > 0;
}
}
После совместной компиляции этих двух частей получается код, аналогичный тому, если бы класс был написан как единый модуль:
public class Customer
{
private int id;
private string name;
private string address;
private List<Order> orders;
public Customer {
...
}
public void SubmitOrder(Order order) {
orders.Add(order);
}
public bool HasOutstandingOrders {
return orders.Count > 0;
}
}

ps. Торможения IntellySence я лично не заметил...
Оставить комментарий
Имя или ник:
Комментарий: