在客户端看不到对象构造函数

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 。