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

时间:2015-02-23 06:15:12

标签: wcf f#

我有一个类型:

[<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)  
            ()

在客户端,我可以创建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")

为什么以及如何解决?

1 个答案:

答案 0 :(得分:1)

在WCF中,您通过序列化(从您的wsdl蓝图)传输数据 - 您没有传递对象引用。如果你想在客户端有构造函数,你总是可以创建一个从服务扩展代理类的类。