2016-07-28 41 views
5
benim yapılandırma dosyasında haritaların bir Yaml koleksiyonunu kullanarak denedi

: tip sağlayıcısı ile okumaya çalışırkenF # Yaml tipi sağlayıcı

Companies: 
    - code: 11 
    name: A 
    country: FR 
    functionalCurrency: EUR 
    - code: 12 
    name: B 
    country: GB 
    functionalCurrency: GBP 

Ancak, sadece listenin ilk sonucu bulur. Ile

:

open FSharp.Configuration 
    type CompaniesConfig = YamlConfig<"Config.yaml"> 
    let config = CompaniesConfig() 

çıkışı geçerli:

val config : CompaniesConfig = 
    Companies: 
    - code: 11 
     name: A 
     country: FR 
     functionalCurrency: EUR 

dolayısıyla bunun bir kitaplık sınırlama veya olup olmadığını merak online çalıştı kodu ayrıştırmak çalışılıyor ...? Yardımlarınız için

Teşekkür

cevap

3

Sen onunla doğrudan çalışmak istiyorsanız şemayı almak değil, aslında dosyasını yüklemek gerekir: config.Load(yamlFile). Bu muhtemelen belgelere daha açık olmalıdır. Bağlantıdaki örnek dosyayı kullandım.

#if INTERACTIVE 
#r @"..\packages\FSharp.Configuration.0.6.1\lib\net40\FSharp.Configuration.dll" 
#endif 

open FSharp.Configuration 
open System.IO 

/// https://github.com/fsprojects/FSharp.Configuration/blob/master/tests/FSharp.Configuration.Tests/Lists.yaml 

[<Literal>] 
let yamlFile = __SOURCE_DIRECTORY__ + "..\Lists.yaml" 

File.Exists yamlFile 

type TestConfig = YamlConfig<yamlFile> 
let config = TestConfig() 

config.Load(yamlFile) 
config.items.Count 
config.items 

Ve ben hem ürün almak:

> 
val it : int = 2 
> 
val it : System.Collections.Generic.IList<TestConfig.items_Item_Type> = 
    seq 
    [FSharp.Configuration.TestConfig+items_Item_Type 
     {descrip = "Water Bucket (Filled)"; 
     part_no = "A4786"; 
     price = 147; 
     quantity = 4;}; 
    FSharp.Configuration.TestConfig+items_Item_Type 
     {descrip = "High Heeled "Ruby" Slippers"; 
     part_no = "E1628"; 
     price = 10027; 
     quantity = 1;}] 
>