F# library supporting Dynamic Objects including inheritance in functional style. Compatible with Fable javascript and python transpilation.
$ dotnet add package DynamicObjF# library supporting Dynamic Objects including inheritance in functional style.
The library is compatible with Fable, allowing transpilation to javascript and python.
The primary use case of DynamicObj is the extension of F# classes with dynamic properties. This is useful when you want to add arbitrarily typed properties to a class at runtime.
Why would you want to do that?
Yes, The type system is one of the core strengths of F#, and it is awesome. However, there are cases where a static domain model is either unfeasible or not flexible enough, especially when interfacing with dynamic languages such as JavaScript or Python.
DynamicObj is transpilable into JS and Python via Fable, meaning you can use it to create classes that are usable in both .NET and those languages, while making their usage (e.g., the setting of dynamic properties) both safe in .NET and idiomatic in JS/Python.
Documentation is hosted at https://csbiology.github.io/DynamicObj/
node --version (Tested with v18.16.1)npm --version (Tested with v9.2.0)dotnet --version (Tested with 7.0.306)py --version (Tested with 3.12.2, known to work only for >=3.11)On windows you can use the setup.cmd to run the following steps automatically!
Setup dotnet tools
dotnet tool restore
Install NPM dependencies
npm install
Setup python environment
py -m venv .venv
Verify correct setup with ./build.cmd runtests ✨