public staticクラスSomething
を持つc#アセンブリがあります。 それは私がF#のを知らないと、もうそれを知っているお店の人がいないのpublic staticメソッドDoSomething(string source, string dest, string file, string arch)
F#アプリケーションでC#アセンブリのネームスペースを使用しますか?
を持っていますが、私は1つのF#プロジェクトは、C#のアセンブリに何を使用するAPIを交換する必要があります。
この方法を別のソリューションのf#プロジェクトで使用し、最初のアセンブリの\ bin \ Debug \ Something.exeへの参照を追加しました(はい、コマンドラインEXEとしても機能します)。
次に、f#ユニットにopen Something
を追加しました。いったん.NETのバージョンが同期すると、アセンブリが読み込まれたように見えました。
今、私はこのスニペットをコーディングしていること:
let src = "C:\"
let dst = "D:\"
let file = "readme.txt"
let arch = "E:\"
Something.DoSomething src dst file arch
それが原因このエラーに構築されていません。
Error 2
The member or object constructor 'DoSomething' takes 4 argument(s) but is here given 1.
The required signature is 'Something.DoSomething(source: string, dest: string, ?file: string, ?archive: string) : bool'.
は、私は本当に間違ってちょうど1引数を渡す私はすべての4を渡すのです信じるのですか?
C#で定義されているDoSomethingはメソッドであり、関数ではありません。 F#から呼び出されても、メソッドパラメータは必ず連結され、カッコで区切られ、カッコで区切られている必要があります。 – TeaDrivenDev
申し訳ありませんが、これはフランス語です。 – ajeh
エラーは '必要な署名は 'Something.DoSomething(ソース:文字列、dest:文字列、?ファイル:文字列、?アーカイブ:文字列):bool'.'です。これは、あなたの呼び出しが' Something.DoSomething(src 、dst、file、arc) 'と同じように、C#のようになります。 – TeaDrivenDev