2012-07-24 49 views
0

我有一个asp网络服务,其中包含一个具有函数内部的类,但我似乎无法访问该函数,当我在我的Winforms中引用它时项目。我的webservice的所有其他方面都在工作,所有内容都根据我的更改进行更新。以下是我的Web服务中的代码,说明了我遇到的问题。在这个例子中,如果我要从引用此Web服务的Winform项目创建ItemOrder实例,我将无法调用AddItem(...)。无法访问Web服务中的类方法

[WebService(Namespace = "http://myurl.com/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ToolboxItem(false)] 
public class MyWebService : System.Web.Services.WebService 
{ 

    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://myurl.com/")] 
    public class ItemOrder 
    { 
     public string OrderNumber = ""; 
     public DateTime OrderDate = DateTime.Now; 
     public decimal TotalCost = 0M; 

     internal List<Item> items = new List<Item>(); 

     [WebMethod] 
     public void AddItem(string reference) 
     { 
      Item item = new Item(); 
      item.ItemReference = reference; 
      items.Add(item); 
     } 
    } 

    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://myurl.com/")] 
    public class Item 
    { 
     public decimal Cost = 0M; 
     public decimal Price = 0M; 
     public string ItemReference = ""; 
    } 
} 

上面的代码是一个简化的例子,不是我的全部情况。我的问题是,我无法调用Web服务类中定义的类的任何方法。我可以调用在根web服务类(MyWebService)中定义的方法没有问题。如果任何人有任何想法,为什么这是或如果你能指出我在正确的方向,这将不胜感激。

回答

2

Web服务无法序列化代码,因此您的类中的方法将无法提供给客户端代理(并且如果您的代码使用私有方法则不会执行)。通过此方法序列化的对象只是数据传输对象 - 哑属性。