【发布时间】:2015-03-29 23:35:24
【问题描述】:
我有一个简单的 WCF 服务
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(ShoppingCart value);
}
public class ShoppingCart
{
public string name;
[XmlElement("ShoppingCartItem")]
public ShoppingCartItem[] ShoppingCartItems;
}
public class ShoppingCartItem
{
public string Description;
}
还有一个简单的测试控制台。当我将服务引用添加到测试控制台时,我的 ShoppingCart 类将出现在 TestConsole reference.cs 文件中。所以我可以在 TestConsole 项目上这样写:
static void Main(string[] args)
{
ShoppingCart body = new ShoppingCart();
FileStream myFileStream = new FileStream(@"C:\Resources\Xmls\New Folder\shoppingCart.xml", FileMode.Open);
XmlSerializer mySerializer = new XmlSerializer(typeof(ShoppingCart));
ShoppingCart cart = (ShoppingCart)mySerializer.Deserialize(myFileStream);
}
我的 shoppingCart.xml 文件是这样的:
<?xml version="1.0"?>
<ShoppingCart>
<name>test</name>
<ShoppingCartItem>
<Description>XBox 360</Description>
</ShoppingCartItem>
<ShoppingCartItem>
<Description>Cell Phone</Description>
</ShoppingCartItem>
</ShoppingCart>
所以,我正在等待代码到来时
ShoppingCart cart = (ShoppingCart)mySerializer.Deserialize(myFileStream);
行,应该有两个项目。但看起来是这样的:
您能否解释一下为什么我的列表没有填写?
【问题讨论】:
标签: c# xml wcf serialization deserialization