f# - 如何从 C#/WPF 使用的接口创建 F# 列表
问题描述
我是新手。鉴于这些中的每一个都代表 C# 中的不同类:
- 联系方式
- 互联网
- 电话号码
- 地址
如何在 F# 中创建一个“列表”来保存不同的具体类型?
所有上述类型都将具有以下共同字段:
- 名称——字符串
除了名称之外,所有具体类型都有不同的字段和内容。
此“列表”类型将由 WFP/XAML 使用。
(我认为需要使用 F# 列表的接口,但我不知道这是如何实现的——F# 对我来说真的很新。:)
TIA
解决方案
考虑使用 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
]
推荐阅读
- api - 如何限制复杂项目资源的 Podio API 输出
- winapi - winapi - 绘制富编辑细边框
- linux - Ubuntu 18.04 Oracle Virtualbox 显示异常
- ios - SwiftUI List didSelect 就像在 UITableView
- symfony - Symfony Form - 通过更改下拉列表中的排序选项对数据进行排序
- reactjs - 如何制作一个自定义按钮,该按钮将从 redux 状态获取 url,并像 history.goBack 方法那样导航回获取这些 url?
- flutter - Flutter WebView 中的 Cookie 字符串
- google-cloud-platform - Google Cloud 和 Active Directory 混合方案
- c# - 表存储查询不会填充所有字段
- git - git clone 巨大的仓库