Я хочу иметь функцию в моей службе 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;
}
}
В реализации этой службы у меня есть:
public class LinqService : IService
{
public string SayHello()
{
return "Hello";
}
public IMyObject GetMyObject()
{
return new MyObject();
}
}
SayHello()
работает хорошо, но GetMyObject()
возвращает System. Объект
. Как можно изменить этот код, чтобы 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;
}
}
Но безуспешно!