【发布时间】:2015-02-24 13:53:50
【问题描述】:
据我所知,我可以在 WCF F# Web 服务中传递对象和记录:
[<DataContract>]
type Item(id : string, name : string) =
[<DataMember>]
member val ItemId = id with get, set
[<DataMember>]
member val ItemName = name with get, set
new() = new Item("", "")
type Person =
{
First : string
Last : string
Age : int
}
网络服务实现:
type SimpleService() =
interface ISimpleService with
member x.GetItems() =
let sql = new SqlConnector()
let result = sql.GetItems()
result
member x.GetPerson() =
let result = { First = "Steve"; Last = "Holt"; Age = 17 }
result
member x.GetPeople() =
let a = { First = "Steve"; Last = "Holt"; Age = 17 }
let b = { First = "Dan"; Last = "Woller"; Age = 34 }
[| a; b |]
我只是想知道哪种方式更好 - 在 F# 服务中传递对象和传递记录?
正如我所见,如果它是用 C# 编写的,则可以在客户端将记录作为对象获取。
正如我所见,我不需要注释我的记录类型以将其作为 Web 服务的结果或参数传递。
我说的对吗?
【问题讨论】:
-
Record 被编译为具有公共只读属性的可序列化密封 .NET 类。所以哪种方式更好取决于你想如何使用这个类。对于记录,您可以使用属性
[<CLIMutable>]然后可以在 C# 代码中修改编译的类对象。