One example of using the DLR in C# is as follows:
dynamic dyn = new MyObject();
dyn.MyMethod(); //resolved at runtime
what would be the equivalent in F#?
Thanks.
One example of using the DLR in C# is as follows:
dynamic dyn = new MyObject();
dyn.MyMethod(); //resolved at runtime
what would be the equivalent in F#?
Thanks.
The
?
operator has similar expressive power to thedynamic
keyword in C# (but it can be only used for reading of properties, method invocation and setting of properties).There is no built-in implementation that would allow you to dynamically use properties or methods of a .NET class (via Reflection or DLR), but there are some fairly solid implementations from the community. This has been discussed in another SO question before.
There are also implementations of
?
that allow you access some common data sources such as SQL databases. For example, this MSDN article includes a definition that allows you to writedb?Query?Foo(1)
to call a stored procedure namedFoo
.For various other types (such as finding an element in XAML or accessing elements or attributes in XML document), the definition of
?
is quite easy to write.On the flip side, if you're trying to expose
dynamic
behavior to C# from F#, you can useDynamicAttribute
[MSDN]. For example, declaring a dynamic property might look likewhich is used from C# like
There's a package called
FSharp.Interop.Dynamic
and that will make it possible to do a call to a dynamic object using the?
operator.F# has the ? operator which you use like so:
There is no dynamic keyword equivalent. Take a look at this article for how to use it https://weblogs.asp.net/podwysocki/using-and-abusing-the-f-dynamic-lookup-operator