我在 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(我这样做了)。但它仍然给客户端的调用方法一个对象作为参数类型,而不是我的接口类型。