Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dynamic C#和#x27;s';动态';在F#_Dynamic_F#_Dynamic Language Runtime - Fatal编程技术网

Dynamic C#和#x27;s';动态';在F#

Dynamic C#和#x27;s';动态';在F#,dynamic,f#,dynamic-language-runtime,Dynamic,F#,Dynamic Language Runtime,在C#中使用DLR的一个示例如下: dynamic dyn=新的MyObject(); dyn.MyMethod()//在运行时解析 F#中的等价物是什么 谢谢。F#有电话吗?您这样使用的运算符: myVariable?SomePropertyThatIsNotDeclared 没有动态关键字等价物。看看这篇文章,了解如何使用它。这个?操作符与C#中的动态关键字具有类似的表达能力(但它只能用于读取属性、方法调用和设置属性) 没有允许您动态使用.NET类的属性或方法(通过反射或DLR)的内置

在C#中使用DLR的一个示例如下:

dynamic dyn=新的MyObject();
dyn.MyMethod()//在运行时解析
F#中的等价物是什么

谢谢。

F#有电话吗?您这样使用的运算符:

 myVariable?SomePropertyThatIsNotDeclared

没有动态关键字等价物。看看这篇文章,了解如何使用它。

这个
操作符与C#中的
动态
关键字具有类似的表达能力(但它只能用于读取属性、方法调用和设置属性)

没有允许您动态使用.NET类的属性或方法(通过反射或DLR)的内置实现,但是社区中有一些相当可靠的实现。这一点已在中讨论过

还有一些
的实现,允许您访问一些常见的数据源,例如SQL数据库。例如,一个允许您编写
db?Query?Foo(1)
来调用名为
Foo
的存储过程的定义


对于各种其他类型(如在XAML中查找元素或访问XML文档中的元素或属性),
的定义非常容易编写。

另一方面,如果您试图从F#向C#公开
动态
行为,则可以使用。例如,声明动态属性可能如下所示

type HasDynamicProperty() =
    [<Dynamic([|true|])>]
    member this.DynamicObject : obj = ...

有一个名为的包,它可以在尝试使用时使用
操作符调用动态对象。

?运算符,我得到以下错误:“错误FS0043:未找到方法或对象构造函数'op_Dynamic'。任何想法:)?所以,底线是“?”操作符比“动态”关键字更通用。但缺点是真正的功能应该由用户提供(例如,如果我需要使用DLR,我必须手动编写所有CallSite的代码)。F#libs中是否有“?”的现成实现?文章现在返回一个404@Kurren链接已被替换
var hdp = new HasDynamicProperty();
dynamic dynObj = hdp.DynamicObject;