Pra*_*dda 1 .net c# oop web-services interface
我有一个带Web方法的.Net Web服务,它接受一个Interface对象作为参数,每当我尝试访问该方法时,我得到异常说:无法序列化成员Product IProduct,因为它是一个接口.
有什么建议可以解决问题吗?
[WebMethod]
Public double CalculateTotal(IProduct product, int Quantity)
{
  return product.Price * Quantity;
}
尝试在方法中添加XmlInclude属性:
[WebMethod]
[XmlInclude(typeof(Product))]
Public double CalculateTotal(IProduct product, int Quantity)
{  
    return product.Price * Quantity;
}
编辑
只是因为你对我使用"产品"这个类感到困惑.将此类替换为实现IProduct的程序集中的任何类,例如
[Serializable]
public class Product : IProduct
{
     public Product(string name, double price)
     {
         this.Name = name;
         this.Price = price;
     }
     public string Name { get; private set; }
     public double Price { get; private set; }
}
public interface IProduct
{
    string Name { get; }
    double Price { get; }
}
....
[Web Method]
[XmlInclude(typeof(Product))]
Public double CalculateTotal(IProduct product, int quantity)
{
     return product.Price * quantity;
}
基本上,当您将接口传递给Web服务时,它无法找到任何架构,因此如果您使用XmlInclude属性并传入具体类,它将能够识别该类型.