2016-04-22 10 views
1

Lese this Artikel finde ich eine seltsame Art und Weise Parameter zu übergeben, um das Objekt:Ist dies der richtige Weg Parameter zu übergeben?

_saveProductCommand = new RelayCommand(
       param => SaveProduct(), 
       param => (CurrentProduct != null) 

Ist der Tippfehler oder die richtige Art und Weise Parameter zu übergeben?

+0

Es ist Relais-Befehl es ist auf diese Weise übergeben –

+1

Es ist, wenn die Parameter Delegaten oder Ausdrücke sind, was bedeutet, dass Sie Lambdas übergeben können. – juharr

+2

Siehe: https://msdn.microsoft.com/en-us/library/bb397687.aspx –

Antwort

2

Was Sie sehen, ist nicht etwas, das für allgemeine Eigenschaften gilt. Wenn der Parameter beispielsweise eine Zeichenfolge wäre, könnten Sie die Syntax name => statement nicht verwenden.

Wenn Sie sich die Definition von RelayCommand ansehen, sehen Sie, dass die Parameter vom Typ Action sind. Dies ist ein spezieller Typ, der es Ihnen erlaubt, Code-Blöcke oder Methoden als Objekte zu übergeben. Diese werden allgemein Delegaten genannt.

Die Syntax, auf die Sie sich beziehen, heißt Lambda und sie kommen in einigen Formen. Die einfachste ist () => doSomething() in diesem Fall das Lambda nimmt keine Parameter und ruft nur die doSomething Methode auf.

Der nächste Schritt ist eine Lambda, das etwas passieren muss einen Parameter param => doSomething(param) in diesem Code nimmt die Variable param ist nur eine lokale Variable für die Codekörper des Lambda in der Lage sein zu verwenden, und der Code, der die Lambda führt In, hier ist ein vollständigeres Beispiel;

var myLambda = param => doSomething(param); 
myLambda("some string value"); 

So in diesem Beispiel wird die Zeichenfolge an die doSomething Methode übergeben werden.

Diese Beispiele betreffen nur Lambdas, die in die Action Klasse konvertiert werden, aber Sie können auch ein Lambda schreiben, das Ihnen eine Func gibt. Es gibt auch eine andere Form namens Predicate Dies ist im Wesentlichen eine Aktion, die wahr oder falsch zurückgibt;

Ich würde vorschlagen, einige zusätzliche Lesung auf der Action Klasse der Func Klasse und der Predicate Klasse.

Verwandte Themen