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;
}
Run Code Online (Sandbox Code Playgroud)
尝试在方法中添加XmlInclude属性:
[WebMethod]
[XmlInclude(typeof(Product))]
Public double CalculateTotal(IProduct product, int Quantity)
{
return product.Price * Quantity;
}
Run Code Online (Sandbox Code Playgroud)
编辑
只是因为你对我使用"产品"这个类感到困惑.将此类替换为实现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;
}
Run Code Online (Sandbox Code Playgroud)
基本上,当您将接口传递给Web服务时,它无法找到任何架构,因此如果您使用XmlInclude属性并传入具体类,它将能够识别该类型.