2010-08-02 7 views
23

F # powerpack에는 Func 함수를 표준 또는 튜플로 변환하는 변환 방법 집합이 Func <>에서 제공됩니다. 그러나 반대의 경우를 수행 할 수 있습니다 : F # 코드에서 Func < ...> 걸리고 네이티브 F # 람다 식 (예 : fun x -> some_function_of (x))을 사용하려는 C# 메서드를 호출하고 싶습니까?F #과 C# lambda 사이의 상호 작용

내가 서명과 함께 F 번호 기능을 보내는 경우 'A ->'B Func을 다음 F # 컴파일러는 다음과 같은 오류 발생 예상하는 C#을 방법 :

This expression was expected to have type Function<'T,'R> but here has type 'T -> 'R

나는 F # 람다 표현식 있고 싶어을하지만, 변환 레이어를 사용하여 C# Func lambda로 보낼 수 있습니다. 달성 가능합니까?

+1

여기에 언급 된 PowerPack의 변환 방법을 찾는 데 어려움이있는 분은 FSharp.PowerPack.Linq, FuncConvertExtensions –

답변

30

F #은 해당하는 함수 형식의 F # 값을 사용하는 모든 대리자 형식에 대해 생성자를 제공합니다. 예 : 귀하의 경우에 유형의 생성자 생성자를 적용하는 System.Func<_,_>(fun x -> ...)을 사용하려고합니다.

+0

에 있습니다. 물론! 빠른 답장을 보내 주셔서 감사합니다. –

+1

이것은'Expression >'에도 적용됩니까? – Maslow

+0

때로는 Google 검색 결과의 세 번째 페이지로 이동하는 것이 좋습니다. ++++는 다시 upvote합니다. –