Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XML转换为接口类型对象的通用列表_C#_.net - Fatal编程技术网

C# 将XML转换为接口类型对象的通用列表

C# 将XML转换为接口类型对象的通用列表,c#,.net,C#,.net,我已经创建了一个通用集合,需要填写XML文档中声明的对象,但是问题是对象类型是IPProduct(即接口) publicstaticlist prod=newlist(); 要从中读取的XML文件: <?xml version="1.0" encoding="UTF-8" standalone="true"?> -<Products> -<Product Name="Buttermilk"> <Price>135</Price> &l

我已经创建了一个通用集合,需要填写XML文档中声明的对象,但是问题是对象类型是IPProduct(即接口)

publicstaticlist prod=newlist();
要从中读取的XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<Products>
-<Product Name="Buttermilk">
<Price>135</Price>
<Quantity>5</Quantity>
</Product>
-<Product Name="Cooked sausages">
<Price>135</Price>
<Quantity>5</Quantity>
</Product>
-<Product Name="Red meat">
<Price>12</Price>
<Quantity>5</Quantity>
</Product>
-<Product Name="Shubat">
<Price>12</Price>
<Quantity>5</Quantity>
</Product>

-
-
135
5.
-
135
5.
-
12
5.
-
12
5.

请告诉我如何使用LINQ填写列表。

我认为最简单的方法是使用XmlSerializer:

           XmlSerializer serializer = new XmlSerializer(typeof(List<MyClass>));

           using(FileStream stream = File.OpenWrite("filename"))
          {
                 List<MyClass> list = new List<MyClass>();
                 serializer.Serialize(stream, list);
           }

           using(FileStream stream = File.OpenRead("filename"))
           {
                  List<MyClass> dezerializedList = (List<MyClass>)serializer.Deserialize(stream);
            }
XmlSerializer serializer=新的XmlSerializer(typeof(List));
使用(FileStream-stream=File.OpenWrite(“文件名”))
{
列表=新列表();
序列化(流,列表);
}
使用(FileStream-stream=File.OpenRead(“文件名”))
{
List DeserializedList=(列表)序列化程序。反序列化(流);
}

您尝试过什么?在您的问题中我没有看到您的任何尝试对不起,但我没有走远:prod=(来自XDocument.Load(XMLloc.Root.Elements(“产品”)中的p)选择新这不是一个代码编写服务。看起来您需要将XML序列化到继承
ipproduct
的类中。您可以使用LINQ,但我认为序列化在这里可能更好。
           XmlSerializer serializer = new XmlSerializer(typeof(List<MyClass>));

           using(FileStream stream = File.OpenWrite("filename"))
          {
                 List<MyClass> list = new List<MyClass>();
                 serializer.Serialize(stream, list);
           }

           using(FileStream stream = File.OpenRead("filename"))
           {
                  List<MyClass> dezerializedList = (List<MyClass>)serializer.Deserialize(stream);
            }