Как открыть интерфейс в веб-службе

Я хочу иметь функцию в моей службе 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;
    }
}

Но безуспешно!

7
задан Steve Wilkes 11 March 2012 в 01:18
поделиться