FInvoke 0.4.0
dotnet add package FInvoke --version 0.4.0
NuGet\Install-Package FInvoke -Version 0.4.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FInvoke" Version="0.4.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FInvoke" Version="0.4.0" />
<PackageReference Include="FInvoke" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FInvoke --version 0.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FInvoke, 0.4.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FInvoke@0.4.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FInvoke&version=0.4.0
#tool nuget:?package=FInvoke&version=0.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
C# methods wrapper 
Simple F# wrapper for C# methods.
Wrapping methods which can throw an Exception.
Import FInvoke.Result module.
open FInvoke.Result
Wrapping methods with void as a return type:
let deleteFile: string -> Result<unit, Exception> = invoke File.Delete
let test () =
match deleteFile "file.ext" with
| Ok result -> result
| Error error -> Debug.Fail(error.Message)
Wrapping methods without arguments:
let getRandomFileName: unit -> Result<string, Exception> = invoke Path.GetRandomFileName
let test () =
match getRandomFileName () with
| Ok name -> Debug.Assert(name.Contains("."))
| Error error -> Debug.Fail(error.Message)
Wrapping methods with one argument:
let getFileName: string -> Result<string, Exception> = invoke Path.GetFileName
let test () =
match getFileName @"root\file.ext" with
| Ok name -> Debug.Assert("file.ext" = name)
| Error error -> Debug.Fail(error.Message)
Wrapping methods with two arguments:
let combine2: string -> string -> Result<string, Exception> = invoke2 Path.Combine
let test () =
match combine2 "root" "file.ext" with
| Ok name -> Debug.Assert(@"root\file.ext" = name)
| Error error -> Debug.Fail(error.Message)
Wrapping methods with three arguments:
let combine3: string -> string -> string -> Result<string, Exception> = invoke3 Path.Combine
let test () =
match combine3 "root" "folder" "file.ext" with
| Ok name -> Debug.Assert(@"root\folder\file.ext" = name)
| Error error -> Debug.Fail(error.Message)
And so on...
Wrapping methods which don't throw an Exception, or you don't care.
Import FInvoke.Object module.
open FInvoke.Object
Wrapping methods with void as a return type:
let deleteFile: string -> unit = invoke File.Delete
let result = deleteFile "file.ext"
Debug.Assert(() = result)
Wrapping methods without arguments:
let getRandomFileName: unit -> string = invoke Path.GetRandomFileName
let name = getRandomFileName ()
Debug.Assert(name.Contains("."))
Wrapping methods with one argument:
let getFileName: string -> string = invoke Path.GetFileName
let name = getFileName @"root\file.ext"
Debug.Assert("file.ext" = name)
Wrapping methods with two arguments:
let combine2: string -> string -> string = invoke2 Path.Combine
let name = combine2 "root" "file.ext"
Debug.Assert(@"root\file.ext" = name)
Wrapping methods with three arguments:
let combine3: string -> string -> string -> string = invoke3 Path.Combine
let name = combine3 "root" "folder" "file.ext"
Debug.Assert(@"root\folder\file.ext" = name)
And so on...
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- FSharp.Core (>= 9.0.303)
-
.NETStandard 2.1
- FSharp.Core (>= 9.0.303)