我希望在我的WCF服务上有一个函数,其返回类型作为接口,但是当我从客户端调用它时,我收到一个System.Object,而不是实现服务发送的接口的类.
以下是一些示例代码:
[ServiceContract]
public interface IService
{
[OperationContract]
string SayHello();
[OperationContract]
IMyObject GetMyObject();
}
public interface IMyObject
{
int Add(int i, int j);
}
[DataContract]
public class MyObject : IMyObject
{
public int Add(int i, int j)
{
return i + j;
}
}
Run Code Online (Sandbox Code Playgroud)
在这项服务的实施中,我有:
public class LinqService : IService
{
public string SayHello()
{
return "Hello";
}
public IMyObject GetMyObject()
{
return new MyObject();
}
}
Run Code Online (Sandbox Code Playgroud)
SayHello()运作良好,但GetMyObject()返回一个System.Object.如何更改此代码以便GetMyObject()返回实现的对象IMyObject?
编辑1
更改代码如下:
using System.Runtime.Serialization;
using System.ServiceModel;
[ServiceContract]
public interface IService
{
[OperationContract]
string SayHello();
[OperationContract]
IMyObject GetMyObject();
}
[ServiceKnownType(typeof(MyObject))]
public interface IMyObject
{
[OperationContract]
int Add(int i, int j);
}
[DataContract]
public class MyObject:IMyObject
{
public int Add(int i, int j)
{
return i + j;
}
}
Run Code Online (Sandbox Code Playgroud)
但没有成功!