如何将接口设置为Web服务中Web方法的返回类型

时间:2012-02-13 12:55:56

标签: web-services soap interface xml-serialization asmx

我在Web服务中使用接口作为Web方法的返回类型。

 [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。

     

描述:执行当前web>请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及它在代码中的起源位置。

     

异常详细信息:System.NotSupportedException:无法序列化接口Billerconnect_BillerApp_Interfaces.IBillerConnectAPIStatus。

我在实现接口的类上应用了[Serializable]属性,因为我知道我无法序列化接口。

1 个答案:

答案 0 :(得分:3)

您无法返回接口,因为您无法使用XML序列化序列化接口。