Usando AutoMapper, llegué a un lugar donde un argumento con nombre hubiera ajuste muy bien:¿Por qué un árbol de expresiones no puede contener una especificación de argumento con nombre?
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, isAdvanced: false)))
Pero el compilador me gritó:
un árbol de expresión no puede contener una especificación de argumento con nombre
así que tuve que volver a:
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, false)))
¿Alguien sabe por qué el compilador no permite argumentos con nombre en esta situación?
Este mensaje de error me siento realmente debe ser documentada a este efecto. En otras palabras, buscar msdn para la cadena de mensaje de error exacto debería proporcionarnos esta aclaración. http://social.msdn.microsoft.com/Search/en-US?query=%22An%20expression%20tree%20may%20not%20contain%20a%20named%20argument%20specification%22&ac=8 – payo
Esto es excelente, gracias Eric. En realidad nunca había tomado un vistazo a las diferencias entre 'Expresión <...> 'y' 'Func <...> hasta ahora. Sin embargo, cuando dice que (1) sería costoso, ¿significa esto en términos de costo de desarrollo o que sería computacionalmente costoso? –
@BrandonLinton: sería costoso desarrollar, probar, documentar y mantener, particularmente si se compara con el muy pequeño beneficio que ofrece. Podríamos haber optado por apoyarlo al principio, después de todo, VB siempre tuvo argumentos con nombre para las llamadas a métodos, pero decidimos no hacerlo. –