2016-09-15 13 views
1

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を渡すのです信じるのですか?

+3

C#で定義されているDoSomethingはメソッドであり、関数ではありません。 F#から呼び出されても、メソッドパラメータは必ず連結され、カッコで区切られ、カッコで区切られている必要があります。 – TeaDrivenDev

+0

申し訳ありませんが、これはフランス語です。 – ajeh

+4

エラーは '必要な署名は 'Something.DoSomething(ソース:文字列、dest:文字列、?ファイル:文字列、?アーカイブ:文字列):bool'.'です。これは、あなたの呼び出しが' Something.DoSomething(src 、dst、file、arc) 'と同じように、C#のようになります。 – TeaDrivenDev

答えて

5

あなたはtupled方法として扱う必要があります。

Something.DoSomething (src, dst, file, arch) 

これは、それが正しくメソッドをコンパイルして呼び出すことができなければなりません。

関連する問題