2012-02-20 18 views
7

में डैपर डॉट नेट क्वेरी मैं एक सरल SQLite क्वेरी करने के लिए F # में डैपर डॉट नेट का उपयोग करने का प्रयास कर रहा हूं। डैपर गतिशील वस्तुओं का संग्रह लौटाता है: सी # में उनका उपयोग सरल है, लेकिन जो मैं समझता हूं उससे F # में कोई गतिशील प्रॉपर्टी लुकअप कार्यान्वित नहीं है।एफ #

यह काम कर रहा है, लेकिन मुझे लगता है कि वहाँ बेहतर तरीके यह करने के लिए प्रतिबिंब का सहारा के बिना कर रहे हैं:

let (?) x prop = 
    let flags = BindingFlags.GetProperty ||| BindingFlags.InvokeMethod 
    x.GetType().InvokeMember(prop, flags, null, x, [||]) 

let doQuery() = 
    //... 
    let conn = new SQLiteConnection (connString) 
    conn.Open() 

    conn.Query("select first_name from customers") 
     |> Seq.map (fun c -> c ? first_name) 
     |> List.ofSeq 

लागू करने के लिए सबसे अच्छा तरीका क्या है? इस मामले में ऑपरेटर?

+3

ऐसा लगता है कि यह धागा आपके प्रश्न का उत्तर देता है: http://stackoverflow.com/questions/6150087/f-dynamic-object-access – pad

+0

@pad अच्छा जवाब। आपको जवाब के रूप में अपनी प्रतिक्रिया जोड़नी चाहिए थी, इसलिए मैं इसे ऊपर उठा सकता था :-) –

+0

@OnorioCatenacci: मैं इसे एक उत्तर के रूप में जोड़ता हूं, यह सुनिश्चित नहीं करता कि यह एक उत्तर के लायक है :)। – pad

उत्तर

6

This thread आपकी समस्या के लिए कई समाधान शामिल हैं। विशेष रूप से, FSharp.Interop.Dynamic NuGet पर उपलब्ध है और उपयोग करने के लिए तैयार है।

+0

मैं उम्मीद कर रहा था कि एक आसान तरीका था (या बाहरी पुस्तकालय के बिना)। मुझे लगता है कि महान शक्ति/महान जिम्मेदारी आदि ... :-) –