F#:记录查询字符串

时间:2016-04-24 21:01:58

标签: serialization f# query-string

我正在搜索一个现有的解决方案来序列化记录以查询字符串但却一无所获。我知道F#的漂亮打印,但我不知道如何手动访问它。

一般来说,我想要这样的事情:

type Person = {first:string; last:string}
type Group = {name:string; size:int}

let person = {first="Mary"; last="Smith"}
let personQueryString = Something.toQueryString person

let group = {name="Full"; size=345}
let groupQueryString = Something.toQueryString group

,其中

personQueryString -> "first=Mary&last=Smith"
groupQueryString -> "name=Full&size=345"

1 个答案:

答案 0 :(得分:6)

我不认为这样的函数存在,但你可以编写一个使用Reflection的函数:

> let person = {first="Mary"; last="Smith"};;

val person : Person = {first = "Mary";
                       last = "Smith";}

> let personQueryString = Something.toQueryString person;;

val personQueryString : string = "first=Mary&last=Smith"

> let group = {name="Full"; size=345};;

val group : Group = {name = "Full";
                     size = 345;}

> let groupQueryString = Something.toQueryString group;;

val groupQueryString : string = "name=Full&size=345"

由于它使用Reflection,它不如提前知道类型的专用函数那么高效,所以只要你知道这是否足以满足你的需求。

但它会产生所需的结果:

 List<Outlook.ContactItem> items = fromFolder.Items.Cast<Outlook.ContactItem>().ToList(); ;