Как установить интерфейс в качестве типа возврата веб-метода в веб-сервисе - PullRequest
0 голосов
/ 13 февраля 2012

Я использую интерфейс в качестве типа возврата веб-метода в веб-службе.

 [WebMethod]
    //[XmlInclude(typeof(BillerConnectAPIStatus))]
    public IBillerConnectAPIStatus PerformInquiry()
    {
        BillerConnectAPIStatus oBillerConnectApitStatue = new BillerConnectAPIStatus();
        return oBillerConnectApitStatue;
    }

Интерфейс:

public interface IBillerConnectAPIStatus 
{
    [XmlAttribute]
    string Description { get; set; }
    [XmlAttribute]
    int Status { get; set; }
}

Класс, реализующий интерфейс:

   [Serializable]
public class BillerConnectAPIStatus : IBillerConnectAPIStatus
{
    string _description;
    int _status;
//[XmlElement]
    [XmlAttribute]
    public string Description
    {
        get
        {
            return _description;
        }
        set
        {
            _description = value;
        }
    }

 //[XmlElement]
    [XmlAttribute]
    public int Status
    {
        get
        {
            return _status;
        }
        set
        {
            _status = value;
        }
    }

    public void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
    {
        throw new NotImplementedException();
    }
}

Но во время выполнения выдает ошибку:

Невозможно сериализовать интерфейс Billerconnect_BillerApp_Interfaces.IBillerConnectAPIStatus.

Описание: во время выполнения текущего веб-запроса возникла необработанная исключительная ситуация.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.NotSupportedException: невозможно сериализовать интерфейс Billerconnect_BillerApp_Interfaces.IBillerConnectAPIStatus.

Я применил атрибут [Serializable] к классу, который реализует интерфейс, поскольку я знаю, что не могусериализовать интерфейс.

1 Ответ

3 голосов
/ 13 февраля 2012

Вы не можете вернуть интерфейс, потому что не можете сериализовать интерфейс с XML-сериализацией.

...