我在 OperationContract 中使用接口作为输入参数。但是当我在客户端生成代理类时,客户端方法被视为:GetDat(object value) 而不是 GetData(IMyObj value)
- 服务接口
[服务合同] [ServiceKnownType(typeof(MyObj))] 公共接口 IService { [运营合同] 字符串 GetData(IMyObj 值); }
- 服务等级
公共类服务:IService { 公共字符串 GetData(IMyObj 值) { return string.Format("您输入:{0}", value.MyValue); } }
- 界面
公共接口 IMyObj { int MyValue { 得到;放; } }
- 数据合约
[数据合约] [KnownType(typeof(IMyObj))] 公共类 MyObj : IMyObj { [数据成员] 公共 int MyValue { 获取;放; } }
注意:stackoverflow 上有很多关于接口参数和 wcf 的类似问题。但他们都告诉使用 ServiceKnownType 属性和 KnownTypeAttribute(我这样做了)。但它仍然给客户端的调用方法一个对象作为参数类型,而不是我的接口类型。