C#/F# interoperability
There are helper classes included in WebSharper for most common conversions between FSharp.Core
and standard .NET types.
These conversions work both on server and client side.
Create F# values from standard .NET counterparts
The WebSharper.FSharpConvert
static class contains static members to create values used commonly in F#.
FSharpConvert.Fun
overloads create curried F# functions for 1-8 arguments fromSystem.Action
andSystem.Func
delegate values.FSharpConvert.Option
overloads create anFSharpOption<T>
value from a value of a .NET reference type orNullable
value type. (To create a 1)FSharpConvert.List
overloads create anFSharpList
.FSharpConvert.Async
overloads create anFSharpAsync<TResult>
from aTask
orTask<TResult>
.FSharpConvert.Ref
overloads create anFSharpRef
object with specified initial value or default value for a type.Option.None
and F#unit
values can be justnull
.
Consume F# values from C#
Everything works as in .NET, there are no extra helpers provided by WebSharper.
- To call an
FSharpFunc
function, use itsInvoke
method. When calling curried F# functions, you have to chain callingInvoke
to pass all arguments separately. - Create F# union values using the
.New...
static method in the union type (or property for a union case with no fields). - Create F# record values by using its constructor.
- Separate union cases by using the
Is...
methods, or theTag
property. Whenever a union hasnull
as possible value, these methods are static. - For the
FSharpOption
type, you can usex?.Value
) to get the value or null.