[英]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.