やりたいこと
C#で、Queueを継承したクラスをXmlSerializerでシリアライズ化したい。
コード
csharp
1class Program 2{ 3 static void Main(string[] args) 4 { 5 MyQueue q = new MyQueue(1); 6 7 XmlSerializer serializer = new XmlSerializer(q.GetType()); 8 StringWriter sw = new StringWriter(); 9 serializer.Serialize(sw, q); 10 Console.WriteLine(sw.ToString()); 11 } 12} 13 14class MyQueue : Queue 15{ 16 public int i; 17 18 public MyQueue() {} 19 20 public MyQueue(int i) 21 { 22 this.i = i; 23 } 24}
エラー内容
上記を実行すると、XmlSerializerの初期化のところで、下記のエラーが発生します。
System.InvalidOperationException Message=MyQueue は ICollection から継承されるため、既定のアクセサーを実装する必要があります。 Source=System.Xml スタック トレース: 場所 System.Xml.Serialization.TypeScope.GetDefaultIndexer(Type type, String memberInfo) 場所 System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, MemberInfo memberInfo, Boolean directReference) 場所 System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError) 場所 System.Xml.Serialization.ModelScope.GetTypeModel(Type type, Boolean directReference) 場所 System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace) 場所 System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) 場所 System.Xml.Serialization.XmlSerializer..ctor(Type type) 場所 Program.Main(String[] args) (xxx\Program.cs):行 18
質問内容
実際にシリアライズ化したい内容としては、MyQueueクラスのメンバ変数(i)なので、Queueとは直接関係ないのですが、どのようにしたらこのクラスをシリアライズ化できるのでしょうか?
> Queueを継承したクラスをXmlSerializerでシリアライズ化したい。
何のためにそういうことがしたいのか、そもそものやりたいことや目的を書いていただいた方が良いかもしれません。
回答2件
あなたの回答
tips
プレビュー