f# interop lambda

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> .