首页 > 解决方案 > 如何从 C#/WPF 使用的接口创建 F# 列表

问题描述

我是新手。鉴于这些中的每一个都代表 C# 中的不同类:

  1. 联系方式
  2. 互联网
  3. 电话号码
  4. 地址

如何在 F# 中创建一个“列表”来保存不同的具体类型?

所有上述类型都将具有以下共同字段:

  1. 名称——字符串

除了名称之外,所有具体类型都有不同的字段和内容。

此“列表”类型将由 WFP/XAML 使用。

(我认为需要使用 F# 列表的接口,但我不知道这是如何实现的——F# 对我来说真的很新。:)

TIA

标签: f#

解决方案


考虑使用 Seq 而不是 List 来帮助 C# 客户端:

我建议使用序列(即 seq)而不是 C# 消费列表。因此,F# 中的序列等同于 C# 中的 IEnumerable。因此,您将能够从您的 Windows 应用程序中使用这些项目。

以下是我将如何实现要求:

type ContactDetail = { Name : string; Other:string }
type Internet      = { Name : string; Other:string }
type PhoneNumber   = { Name : string; Other:string }
type Address       = { Name : string; Other:string }

type MyType =
    | ContactDetails of ContactDetail seq
    | Internet       of Internet      seq
    | PhoneNumbers   of PhoneNumber   seq
    | Addresses      of Address       seq

let contactDetail  : ContactDetail = { Name="some name"; Other="???" }
let contactDetails = ContactDetails [contactDetail]

let internet       : Internet = { Name="some name"; Other="???" }
let internets      = Internet [internet]

let phoneNumber    : PhoneNumber = { Name="some name"; Other="???" }
let PhoneNumbers   = PhoneNumbers [phoneNumber]

let myTypes : MyType seq = seq [ contactDetails
                                 internets
                                 PhoneNumbers
                               ]

推荐阅读