在客户端看不到对象构造函数
Cannot see the object constructor on the client side
我有一个类型:
[<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("", "")
服务合同:
[<ServiceContract>]
type ISimpleService =
[<OperationContract>]
abstract InsertItem: b:Item -> unit
和服务:
type SimpleService() =
interface ISimpleService with
member x.InsertItem item =
let sql = new SqlConnector()
sql.InsertItem(item)
()
在客户端,我可以创建项目并将其传递给服务:
let newItem = new webService.ServiceTypes.Entities.Item()
newItem.ItemId <- "10"
newItem.ItemName <- "ten"
client.InsertItem(newItem)
但是我没有带两个参数的构造函数,所以我不能这样做:
let newItem = new webService.ServiceTypes.Entities.Item("10", "one")
为什么以及如何解决?
在 WCF 中,您通过序列化(从您的 wsdl 蓝图)传输数据 - 您没有传递对象引用。如果你想在客户端有构造函数,你总是可以创建一个 class 从服务扩展代理 class 。
我有一个类型:
[<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("", "")
服务合同:
[<ServiceContract>]
type ISimpleService =
[<OperationContract>]
abstract InsertItem: b:Item -> unit
和服务:
type SimpleService() =
interface ISimpleService with
member x.InsertItem item =
let sql = new SqlConnector()
sql.InsertItem(item)
()
在客户端,我可以创建项目并将其传递给服务:
let newItem = new webService.ServiceTypes.Entities.Item()
newItem.ItemId <- "10"
newItem.ItemName <- "ten"
client.InsertItem(newItem)
但是我没有带两个参数的构造函数,所以我不能这样做:
let newItem = new webService.ServiceTypes.Entities.Item("10", "one")
为什么以及如何解决?
在 WCF 中,您通过序列化(从您的 wsdl 蓝图)传输数据 - 您没有传递对象引用。如果你想在客户端有构造函数,你总是可以创建一个 class 从服务扩展代理 class 。