yapi-net/YandexDirect — pull request #7 by kostrse (2012-02-25 16:13:59+00:00)
Title: Complete support for banners and phrases.

Обновлены методы работы с объявлениями и фразами, а также соответствующие структуры.

1) Реализована иерархия структур различной степени детализации (в зависимости от режима возвращаемых данных). Это сделано в целях того, чтобы не объявлять большее количество полей в одной общей большой структуре Nullable потому-что они возвращаются не всегда. Теперь если данные присутствуют в структуре, значит они возвращаются и имеют смысл. Т.е. более строгая типизация и структур.

2) Для редактирования записей существует соответствующий тип данных.
EditableBannerInfo - он содержит только те поля, которые непосредственно необходимы для при сохранении объявления на сервере.
Чтобы отредактировать существующее объявления, его необходимо предварительно клонировать в данный тип (реализация правила того, что редактирование изменений необходимо проводить в отдельном объекте, а не в оригинальном, ссылки на который могут использоваться в различных частях приложения).

3) Думал над сигнатурами методов, их длина и количество перегрузок не совсем нравятся, но перебрав множество вариантов (включая работу через ), ничего лучшего не придумал.

Пример варианта использования методов:

```
var banner1 = service.GetBanner(63907290);
var banner2 = service.GetBannerWithPhrasesAndStats(banner1);
var banner3 = service.GetBannerWithPhrasesAndStats(63907290).ToEditable();

banner3.Phrases[2].Price = 2;

service.CreateOrUpdateBanner(banner3);
```