こんにちは、クラスから派生したオブジェクトの配列をシリアル化しようとしていますが、c# を使用して同じエラーが発生し続けています。どんな助けでも大歓迎です。
明らかに、この例は、現実の世界でのこの記事の目的のために縮小されています。形状には、さまざまな形状が多数含まれています。
Program.cs
namespace XMLInheritTests
{
class Program
{
static void Main(string[] args)
{
Shape[] a = new Shape[1] { new Square(1) };
FileStream fS = new FileStream("C:\\shape.xml",
FileMode.OpenOrCreate);
XmlSerializer xS = new XmlSerializer(a.GetType());
Console.WriteLine("writing");
try
{
xS.Serialize(fS, a);
}
catch (Exception e)
{
Console.WriteLine(e.InnerException.ToString());
Console.ReadKey();
}
fS.Close();
Console.WriteLine("Fin");
}
}
}
Shape.cs
namespace XMLInheritTests
{
public abstract class Shape
{
public Shape() { }
public int area;
public int edges;
}
}
Square.cs
namespace XMLInheritTests
{
public class Square : Shape
{
public int iSize;
public Square() { }
public Square(int size)
{
iSize = size;
edges = 4;
area = size * size;
}
}
}
エラー: System.InvalidOperationException: XMLInheritTests.Square 型は予期されていませんでした。XmlInclude または SoapInclude 属性を使用して、静的に認識されていない型を指定します。
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterShapeA 配列.Write2_Shape (文字列 n、文字列 ns、形状 o、ブール値 isNullable、ブール値の型が必要) で
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterShapeA 配列.Write3_ArrayOfShape (オブジェクト o) で
どうもありがとう