2014-02-21 2 views
1

Как и почему Braintree устанавливает свой код API таким образом? Они каким-то образом позволяют вызвать вызовы методов, которые соединяются, а затем заполняются в переменную, которая, наконец, отправляется через метод Search(). Я никогда не видел, чтобы API работали до этого (кроме, возможно, Linq). Как они устанавливают такие вещи за кулисами и что делает это лучше (или хуже)?Как и почему Braintree устанавливает свой код API таким образом?

https://www.braintreepayments.com/docs/dotnet/transactions/search

var request = new TransactionSearchRequest(). 
    CreditCardCardholderName.Is("Patrick Smith"). 
    CreditCardExpirationDate.Is("05/2012"). 
    CreditCardNumber.Is("5105105105105100"); 

ResourceCollection<Transaction> collection = gateway.Transaction.Search(request); 
+1

Мы не можем обоснованно ответить на этот вопрос; вы должны спросить их. Мы не знаем, как это будет выглядеть с другой стороны. – Makoto

+1

Я работаю в Braintree. Все наши клиентские библиотеки имеют открытый исходный код, поэтому вы можете увидеть, как мы это делаем: https://github.com/braintree/braintree_dotnet/blob/master/Braintree/TransactionSearchRequest.cs – agf

+0

@agf nice - спасибо! (вы, ребята, рок, BTW) – RichC

ответ

1

Если каждый метод возвращает ссылку на объект, вы могли бы цепь столько вместе, как вам нравится.

public class Foo { 
// stuff... 

    public Foo Baz() { 
     // do stuff 
     return this; //return a reference to the object 
    } 

} 

Я думаю, что идея (например, linq) имеет реляционно-ориентированный объектно-ориентированный код.

Его тип, как определение мини-языка в API, который следует своим собственным правилам, а не более широкие языковые соглашения.

Я предпочитаю рублю ближе к соглашению, но этот вид синтаксиса не является необычным в контексте ОРМ-х

+0

Как это выглядит на другой стороне, чтобы это можно было сделать? – RichC

+0

aahh, теперь имеет смысл. спасибо за образец кода. – RichC

Смежные вопросы