[英]F# dynamic object access
有没有办法访问 F# 中类似于 C# 动态的 DLR object(例如 DynamicObject 子类实例)成员(属性和方法)?
现在 nuget 上有一个模块,它使用 dlr 来实现动态运算符。 FSharp.Interop.Dynamic
与那里的许多片段相比,它有几个优点。
正如 eriawan 提到的, ?
运算符的行为有点像 C# 中的dynamic
类型。 关于调用 SQL 的文章不依赖于 DLR 的任何内容,因为您可以提供自己的?
运算符和编译器直接使用它。
我还写了一个简短的例子来说明如何使用?
运营商使用 DLR 呼叫成员,可在 F# 片段上找到,Matthew Podwysocki 提供了更复杂的版本。 另一个片段显示了如何使用它来使用 Reflection 调用标准 .NET 类型。
也可以看看:
是的。 你可以用?
F# 中的运算符,它将在 C# 和 VB.NET 中的 C# 和 Z303CB0EF9EDB9082D64BBE0.55082D64BB9 中的 VB.NET 中执行相同的方式。 首先,您可以从 Tomas Petricek 的博客中阅读此示例 Dynamic SQLDataReader:
http://tomasp.net/blog/dynamic-sql.aspx
以下是他文章中的一段话:
在本文中,我们将了解如何使用动态运算符来显着改善使用 F# 中的 ADO.NET 的体验。 动态运算符(实际上有两个)是 F# 中支持动态调用的一种简单方法。 我们可以使用它来编写看起来几乎像普通方法调用或属性访问但在运行时动态解析的代码(使用方法或属性的名称)。 下面的例子展示了我们在本文结尾可以写的内容:
// Call 'GetProducts' procedure with 'CategoryID' set to 1 use conn = new DynamicSqlConnection(connectionString) use cmd = conn?GetProducts cmd?CategoryID <- 1 conn.Open() // Read all products and print their names use reader = cmd.ExecuteReader() while reader.Read() do printfn "Product: %s" reader?ProductName
如果您曾经尝试使用 SqlCommand 直接调用 SQL 存储过程,那么您一定会欣赏到这段代码的优雅。 现在让我们看一个更大的例子和一些使这成为可能的巧妙技巧......
有关更多信息,您可以阅读他的文章中的 rest。 F#中的快乐动态编码:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.