我有一個.net網絡服務與網絡方法,需要一個接口對象作爲參數,每當我嘗試訪問的方法我收到異常說:無法序列化成員產品IProduct,因爲它是一個接口。如何將接口對象傳遞給WebMethod?
任何建議,以解決問題??
[WebMethod]
Public double CalculateTotal(IProduct product, int Quantity)
{
return product.Price * Quantity;
}
我有一個.net網絡服務與網絡方法,需要一個接口對象作爲參數,每當我嘗試訪問的方法我收到異常說:無法序列化成員產品IProduct,因爲它是一個接口。如何將接口對象傳遞給WebMethod?
任何建議,以解決問題??
[WebMethod]
Public double CalculateTotal(IProduct product, int Quantity)
{
return product.Price * Quantity;
}
喜PRASHANT請嘗試做這樣的..
作爲代替
[WebMethod]
Public double CalculateTotal(IProduct product, int Quantity)
{
return product.Price * Quantity;
}
只需添加一個抽象類becoz你需要一個類型序列化..
[Serializable]
public abstract class ProductAbstract : IProduct
{
// define all methods/attributes of interface IProduct here as abstract methods/attributes
}
[WebMethod]
Public double CalculateTotal(ProductAbstract 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 attribute,並通過在具體的類就能夠識別的類型找到任何架構它,因此。
返回類型是雙重的 – 2009-09-30 08:56:02
不適用於我:( – 2009-09-30 09:11:06
確保產品標有[可序列化] – James 2009-09-30 09:12:50
花式發佈一些代碼? – 2009-09-30 08:51:49
我覺得在這裏沒有指定的是將接口公開爲Web方法簽名的一部分是否合適?根據我個人的經驗,這似乎不是。 – Lisa 2011-05-04 00:03:11