Какие плавные интерфейсы вы сделали или видели в C #, которые были очень ценными? Что в них такого хорошего? - PullRequest
17 голосов
/ 27 марта 2009

«Свободные интерфейсы» - довольно актуальная тема в наши дни. В C # 3.0 есть несколько приятных функций (особенно методов расширения), которые помогут вам их создавать.

К вашему сведению, свободный API означает, что каждый вызов метода возвращает что-то полезное, часто тот же объект, для которого вы вызывали метод, так что вы можете продолжать связывать вещи. Мартин Фаулер обсуждает это с примером Java здесь . Концепция выглядит примерно так:

var myListOfPeople = new List<Person>();

var person = new Person();
person.SetFirstName("Douglas").SetLastName("Adams").SetAge(42).AddToList(myListOfPeople);

Я видел несколько невероятно полезных беглых интерфейсов в C # (один из примеров - свободный подход к проверке параметров, найденный в более раннем вопросе StackOverflow, который я задал . Он обескуражил меня. читаемый синтаксис для выражения правил проверки параметров, а также, если не было исключений, он мог избежать создания каких-либо объектов! Так что для «нормального случая» было очень мало накладных расходов. Этот один лакомый кусочек научил меня огромному количеству сумма за короткое время. Я хочу найти больше таких вещей).

Итак, я хотел бы узнать больше, посмотрев и обсудив несколько прекрасных примеров. Итак, Какие отличные беглые интерфейсы вы создали или видели в C #, и что сделало их такими ценными?

Спасибо.

Ответы [ 11 ]

0 голосов
/ 27 марта 2009

Как уже упоминалось @ Джон Шихан , Ninject использует этот тип API для определения привязок. Вот пример кода из их руководства пользователя :

Bind<IWeapon>().To<Sword>();
Bind<Samurai>().ToSelf();
Bind<Shogun>().ToSelf().Using<SingletonBehavior>();
...