Interoperacion entre F#y C#lambdas
(1)
F # powerpack viene con un conjunto de métodos de conversión para traducir Func <...> a funciones F #, ya sean estándar o tupidas. Pero, ¿es posible lograr lo opuesto: en caso de que quiera llamar desde el código F # un método C # que toma Func <...> y desea utilizar la expresión nativa F # lambda (por ejemplo, diversión x -> some_function_of (x))?
Si envío una función F # con la firma ''a ->'' b a un método C # que espera Func, el compilador F # genera el siguiente error:
This expression was expected to have type Function<''T,''R> but here has type ''T -> ''R
Quiero quedarme con expresiones F # lambda pero usar una capa de traducción para poder enviarlas como C # Func lambda. Es esto alcanzable?
F # proporciona constructores para todos los tipos de delegados que toman valores F # de los tipos de funciones correspondientes. Por ejemplo, en su caso, usted quiere usar System.Func<_,_>(fun x -> ...)
que aplique el constructor generado de tipo (''a -> ''b) -> System.Func<''a, ''b>
.