dynamitey-ci - FSharp.Interop.Dynamic 5.0.0-alpha255
dynamic operator using the DLR
PM> Install-Package FSharp.Interop.Dynamic -Version 5.0.0-alpha255 -Source https://www.myget.org/F/dynamitey-ci/api/v3/index.json
> nuget.exe install FSharp.Interop.Dynamic -Version 5.0.0-alpha255 -Source https://www.myget.org/F/dynamitey-ci/api/v3/index.json
> dotnet add package FSharp.Interop.Dynamic --version 5.0.0-alpha255 --source https://www.myget.org/F/dynamitey-ci/api/v3/index.json
source https://www.myget.org/F/dynamitey-ci/api/v3/index.json
nuget FSharp.Interop.Dynamic ~> 5.0.0-alpha255
Copy to clipboard
> choco install FSharp.Interop.Dynamic --version 5.0.0-alpha255 --source https://www.myget.org/F/dynamitey-ci/api/v2
Import-Module PowerShellGet
Register-PSRepository -Name "dynamitey-ci" -SourceLocation "https://www.myget.org/F/dynamitey-ci/api/v2"
Install-Module -Name "FSharp.Interop.Dynamic" -RequiredVersion "5.0.0-alpha255" -Repository "dynamitey-ci" -AllowPreRelease
Copy to clipboard
Browse the sources in this package using Visual Studio or WinDbg by configuring the following legacy symbol server URL: https://www.myget.org/F/dynamitey-ci/symbols/
FSharp.Interop.Dynamic
The F# Dynamic Operator, powered by the DLR. Compiled for .NET Standard 2.0, .NET Standard 1.6, .NET Framework 4.5
Install from NuGet
PM> Install-Package FSharp.Interop.Dynamic
Build Status
Platform | Status |
---|---|
Nuget Deployment | |
Mac/Linux/Windows | |
Coverage |
Bleeding edge feed on MyGet
Usage
target?Property
, target?Property<-value
, and target?Method(arg,arg2)
allow you to dynamically get/set properties and call methods
Also Dyn.implicitConvert
,Dyn.explicitConvert
, comparison operators and more.
Examples:
System.Dynamic
open FSharp.Interop.Dynamic
let ex1 = ExpandoObject()
ex1?Test<-"Hi"//Set Dynamic Property
ex1?Test //Get Dynamic
MVC ViewBag
x.ViewBag?Name<-"George"
Dynamitey
open FSharp.Interop.Dynamic
open Dynamitey.DynamicObjects
let ComBinder = LateType("System.Dynamic.ComBinder, System.Dynamic, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
let getPropertyNames (target:obj) =
seq {
yield! target.GetType().GetTypeInfo().GetProperties().Select(fun it -> it.Name)
if (ComBinder.IsAvailable) then
yield! ComBinder?GetDynamicDataMemberNames(target)
}
Python Interop
Translated from this example C# code: https://github.com/SciSharp/pythonnet#example
open Python.Runtime
open FSharp.Interop.Dynamic
open FSharp.Interop.Dynamic.Operators
do
use __ = Py.GIL()
let np = Py.Import("numpy")
np?cos(np?pi ?*? 2)
|> printfn "%O"
let sin: obj -> obj = np?sin
sin 5 |> printfn "%O"
np?cos 5 ?+? sin 5
|> printfn "%O"
let a: obj = np?array([| 1.; 2.; 3. |])
printfn "%O" a?dtype
let b: obj = np?array([| 6.; 5.; 4. |], Dyn.namedArg "dtype" np?int32)
printfn "%O" b?dtype
a ?*? b
|> printfn "%O"
Output
1.0
-0.9589242746631385
-0.6752620891999122
float64
int32
[ 6. 10. 12.]
SignalR (.net framework version)
open FSharp.Interop.Dynamic
type MyHub =
inherit Hub
member x.Send (name : string) (message : string) =
base.Clients.All?addMessage(name,message) |> ignore
Caveats:
The DLR
is incompatible with interface explicit members, so are these operators, just like C#'s dynamic
keyword.
.NET Core 2.0.0 to 2.0.2 had a major bug in the C# dynamic keyword with nested classes inside of generic classes.. You will know it from a substring argument length exception. .NET Framework 4.0+, .NET Core 1.x and .NET Core 2.0.3+ and later are unaffected.
Maintainer(s)
The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)
-
.NETFramework 4.5
- Dynamitey (>= 2.0.10.189)
- FSharp.Core (>= 4.2.3)
- Microsoft.CSharp (>= 4.6.0)
-
.NETStandard 1.6
- Dynamitey (>= 2.0.10.189)
- FSharp.Core (>= 4.2.3)
- Microsoft.CSharp (>= 4.6.0)
- NETStandard.Library (>= 1.6.1)
-
.NETStandard 2.0
- Dynamitey (>= 2.0.10.189)
- FSharp.Core (>= 4.2.3)
- Microsoft.CSharp (>= 4.6.0)
- .NETFramework 4.5: 4.5.0.0
- .NETStandard 1.6: 1.6.0.0
- .NETStandard 2.0: 2.0.0.0
Assembly | Assembly hash | Match |
---|---|---|
/lib/net45/fsharp.interop.dynamic.dll | 0c2335bc72e64fe599fcfb8f8d16c1e6FFFFFFFF | |
/lib/netstandard2.0/fsharp.interop.dynamic.dll | a7cab4f902024067a3f115c6ee0beb52FFFFFFFF | |
/lib/netstandard1.6/fsharp.interop.dynamic.dll | c7b2ff57240b491080156cbb67372de1f | |
/lib/netstandard1.6/fsharp.interop.dynamic.dll | c7b2ff57240b491080156cbb67372def1 |
OwnersJay Tuley |
AuthorsJay Tuley |
Project URLhttps://github.com/fsprojects/FSharp.Interop.Dynamic |
LicenseApache-2.0 |
Tagsfsharp dynamic dlr |
Info250 total downloads |
3 downloads for version 5.0.0-alpha255 |
Download (50.29 KB) |
Download legacy symbols (65.01 KB) |
Found on the current feed only |
Package history
Version | Size | Last updated | Downloads | Mirrored? | |||
---|---|---|---|---|---|---|---|
5.0.1.269 | 53.33 KB | Thu, 03 Oct 2019 05:01:29 GMT | 5 | ||||
5.0.1.268 | 53.33 KB | Thu, 03 Oct 2019 04:52:08 GMT | 3 | ||||
5.0.1-alpha272 | 50.72 KB | Thu, 03 Oct 2019 05:21:08 GMT | 4 | ||||
5.0.1-alpha271 | 50.72 KB | Thu, 03 Oct 2019 05:16:38 GMT | 4 | ||||
5.0.1-alpha270 | 50.5 KB | Thu, 03 Oct 2019 05:12:01 GMT | 3 | ||||
5.0.1-alpha267 | 50.49 KB | Thu, 03 Oct 2019 04:47:39 GMT | 3 | ||||
5.0.0.251 | 53.15 KB | Wed, 11 Sep 2019 21:56:11 GMT | 3 | ||||
5.0.0.250 | 53.16 KB | Wed, 11 Sep 2019 21:48:31 GMT | 3 | ||||
5.0.0-alpha266 | 50.48 KB | Thu, 03 Oct 2019 04:42:43 GMT | 3 | ||||
5.0.0-alpha265 | 50.48 KB | Thu, 03 Oct 2019 04:28:27 GMT | 3 | ||||
5.0.0-alpha264 | 50.49 KB | Thu, 03 Oct 2019 04:12:24 GMT | 3 | ||||
5.0.0-alpha262 | 50.49 KB | Thu, 03 Oct 2019 03:58:39 GMT | 3 | ||||
5.0.0-alpha257 | 50.29 KB | Wed, 02 Oct 2019 21:54:33 GMT | 3 | ||||
5.0.0-alpha256 | 50.29 KB | Wed, 02 Oct 2019 21:19:46 GMT | 3 | ||||
5.0.0-alpha255 | 50.29 KB | Wed, 02 Oct 2019 21:15:22 GMT | 3 | ||||
5.0.0-alpha254 | 50.29 KB | Wed, 02 Oct 2019 21:10:59 GMT | 3 | ||||
5.0.0-alpha253 | 50.3 KB | Wed, 02 Oct 2019 21:00:39 GMT | 3 | ||||
5.0.0-alpha252 | 50.31 KB | Wed, 02 Oct 2019 20:36:41 GMT | 3 | ||||
5.0.0-alpha249 | 50.31 KB | Wed, 11 Sep 2019 21:28:01 GMT | 3 | ||||
5.0.0-alpha248 | 46.89 KB | Wed, 11 Sep 2019 21:15:55 GMT | 3 | ||||
5.0.0-alpha247 | 46.89 KB | Mon, 03 Dec 2018 17:02:11 GMT | 3 | ||||
5.0.0-alpha243 | 46.98 KB | Thu, 07 Jun 2018 03:07:41 GMT | 3 | ||||
5.0.0-alpha241 | 46.99 KB | Thu, 07 Jun 2018 02:51:45 GMT | 3 | ||||
5.0.0-alpha239 | 46.99 KB | Thu, 07 Jun 2018 02:40:17 GMT | 3 | ||||
5.0.0-alpha238 | 45.19 KB | Thu, 24 May 2018 23:20:30 GMT | 3 | ||||
5.0.0-alpha236 | 45.19 KB | Thu, 24 May 2018 23:12:54 GMT | 3 | ||||
5.0.0-alpha234 | 45.19 KB | Thu, 24 May 2018 23:06:47 GMT | 3 | ||||
5.0.0-alpha232 | 45.19 KB | Thu, 24 May 2018 22:49:43 GMT | 3 | ||||
5.0.0-alpha231 | 45.19 KB | Thu, 24 May 2018 22:39:30 GMT | 3 | ||||
5.0.0-alpha229 | 45.19 KB | Thu, 24 May 2018 22:27:15 GMT | 3 | ||||
5.0.0-alpha227 | 45.19 KB | Thu, 24 May 2018 22:09:51 GMT | 3 | ||||
5.0.0-alpha219 | 45.19 KB | Thu, 24 May 2018 17:03:40 GMT | 3 | ||||
5.0.0-alpha217 | 45.19 KB | Thu, 24 May 2018 16:37:24 GMT | 3 | ||||
5.0.0-alpha215 | 45.13 KB | Thu, 24 May 2018 16:20:33 GMT | 4 | ||||
5.0.0-alpha213 | 45.04 KB | Thu, 24 May 2018 14:15:14 GMT | 3 | ||||
5.0.0-alpha211 | 42.61 KB | Wed, 23 May 2018 20:56:22 GMT | 3 | ||||
5.0.0-alpha209 | 41.6 KB | Wed, 23 May 2018 20:23:28 GMT | 4 | ||||
5.0.0-alpha207 | 41.62 KB | Wed, 23 May 2018 17:22:28 GMT | 3 | ||||
5.0.0-alpha205 | 37.36 KB | Wed, 23 May 2018 14:14:55 GMT | 3 | ||||
5.0.0-alpha203 | 37.34 KB | Wed, 23 May 2018 05:51:09 GMT | 3 | ||||
5.0.0-alpha199 | 37.34 KB | Wed, 23 May 2018 05:31:12 GMT | 3 | ||||
5.0.0-alpha198 | 37.35 KB | Wed, 23 May 2018 05:28:28 GMT | 3 | ||||
5.0.0-alpha195 | 37.34 KB | Wed, 23 May 2018 05:17:50 GMT | 3 | ||||
5.0.0-alpha193 | 37.34 KB | Wed, 23 May 2018 05:12:28 GMT | 3 | ||||
5.0.0-alpha191 | 37.35 KB | Wed, 23 May 2018 05:06:56 GMT | 3 | ||||
5.0.0-alpha189 | 37.34 KB | Wed, 23 May 2018 05:02:55 GMT | 3 | ||||
5.0.0-alpha187 | 37.34 KB | Wed, 23 May 2018 04:53:05 GMT | 3 | ||||
5.0.0-alpha185 | 37.34 KB | Wed, 23 May 2018 04:40:25 GMT | 3 | ||||
5.0.0-alpha183 | 37.34 KB | Wed, 23 May 2018 04:34:24 GMT | 3 | ||||
5.0.0-alpha181 | 37.34 KB | Wed, 23 May 2018 04:18:38 GMT | 3 | ||||
5.0.0-alpha179 | 37.34 KB | Wed, 23 May 2018 04:05:03 GMT | 3 | ||||
5.0.0-alpha177 | 37.34 KB | Wed, 23 May 2018 03:57:55 GMT | 3 | ||||
5.0.0-alpha175 | 37.34 KB | Wed, 23 May 2018 03:45:40 GMT | 3 | ||||
5.0.0-alpha173 | 37.34 KB | Wed, 23 May 2018 03:41:17 GMT | 3 | ||||
5.0.0-alpha171 | 37.35 KB | Wed, 23 May 2018 03:26:35 GMT | 3 | ||||
5.0.0-alpha169 | 37.34 KB | Wed, 23 May 2018 03:09:43 GMT | 3 | ||||
5.0.0-alpha167 | 37.34 KB | Wed, 23 May 2018 03:03:04 GMT | 3 | ||||
5.0.0-alpha165 | 37.34 KB | Wed, 23 May 2018 02:58:51 GMT | 3 | ||||
5.0.0-alpha163 | 37.34 KB | Wed, 23 May 2018 02:44:47 GMT | 3 | ||||
5.0.0-alpha161 | 37.34 KB | Wed, 23 May 2018 02:12:49 GMT | 4 | ||||
5.0.0-alpha159 | 37.34 KB | Wed, 23 May 2018 01:52:48 GMT | 3 | ||||
5.0.0-alpha157 | 37.34 KB | Wed, 23 May 2018 01:47:48 GMT | 3 | ||||
5.0.0-alpha155 | 37.34 KB | Tue, 22 May 2018 15:22:51 GMT | 4 | ||||
5.0.0-alpha153 | 25.53 KB | Tue, 22 May 2018 13:08:48 GMT | 4 | ||||
5.0.0-alpha151 | 25.54 KB | Tue, 22 May 2018 04:08:51 GMT | 3 | ||||
4.1.0-alpha135 | 38.15 KB | Wed, 09 May 2018 04:19:14 GMT | 4 | ||||
4.0.4-alpha134 | 24.59 KB | Sun, 29 Apr 2018 21:51:11 GMT | 3 | ||||
4.0.3.131 | 26.8 KB | Thu, 05 Apr 2018 06:26:00 GMT | 6 | ||||
4.0.3.130 | 26.81 KB | Thu, 05 Apr 2018 06:22:31 GMT | 3 | ||||
4.0.3-beta97 | 24.17 KB | Sat, 19 Aug 2017 02:43:36 GMT | 3 | ||||
4.0.3-beta95 | 24.17 KB | Sat, 19 Aug 2017 02:38:38 GMT | 3 | ||||
4.0.3-alpha99 | 24.16 KB | Tue, 19 Dec 2017 19:29:23 GMT | 4 | ||||
4.0.3-alpha98 | 24.17 KB | Tue, 19 Dec 2017 19:25:13 GMT | 3 | ||||
4.0.3-alpha94 | 24.18 KB | Sat, 19 Aug 2017 02:30:01 GMT | 4 | ||||
4.0.3-alpha83 | 24.23 KB | Thu, 17 Aug 2017 21:16:27 GMT | 3 | ||||
4.0.3-alpha133 | 24.59 KB | Thu, 05 Apr 2018 06:27:42 GMT | 3 | ||||
4.0.3-alpha126 | 24.59 KB | Thu, 05 Apr 2018 05:31:13 GMT | 3 | ||||
4.0.3-alpha121 | 24.62 KB | Tue, 20 Mar 2018 06:20:21 GMT | 4 |