Mit AutoMapper, traf ich einen Ort, an dem ein benanntes Argument passen sehr schön haben würde:Warum kann ein Ausdrucksbaum keine benannte Argumentspezifikation enthalten?
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, isAdvanced: false)))
aber der Compiler schrie mich an:
Ein Ausdruck Baum keine benannte Argument-Spezifikation enthalten
Also musste ich zurückkehren:
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, false)))
Weiß jemand, warum der Compiler in dieser Situation benannte Argumente nicht zulässt?
Diese Fehlermeldung, die ich fühle, sollte wirklich zu diesem Einfluss dokumentiert werden. Mit anderen Worten, die Suche in msdn nach der genauen Fehlermeldung sollte uns diese Klarstellung liefern. http://social.msdn.microsoft.com/Search/en-US?query=%22An%20expression%20tree%20may%20not%20contain%20a%20named%20argument%20specification%22&ac=8 – payo
Das ist ausgezeichnet - danke Eric. Ich habe mir die Unterschiede zwischen 'Expression <...>' und' Func <...>' bisher nicht wirklich angesehen. Wenn Sie sagen, dass (1) teuer wäre, bedeutet dies jedoch, dass es sich um Entwicklungskosten handelt oder dass es rechenintensiv wäre? –
@BrandonLinton: Es wäre teuer zu entwickeln, zu testen, zu dokumentieren und zu warten, besonders im Vergleich zu dem sehr kleinen Vorteil, den es bietet. Wir hätten uns anfangs entscheiden können, es zu unterstützen - schließlich hatte VB immer Argumente für Methodenaufrufe benannt - aber wir haben es nicht gewählt. –