我有许多测试实现接口 IDoTest 的列表,我想将它们存储在文件中。我也想从这个文件中读取。
简单地使用XmlSerializer将对象存储在我的 IDoTest 列表中似乎很自然。但是当我这样做时,我会感到模糊,很抱歉我不能在 System.Xml.Serialization.TypeDesc.CheckSupported() 附近犯那个错误
XmlSerializer 只能做一些琐碎的工作吗?还是我错过了什么?他们在 MSDN上谈论自定义序列化。这是我的简化代码示例。
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
public interface IDoTest
{
void DoTest();
void Setup();
}
internal class TestDBConnection : IDoTest
{
public string DBName;
public void DoTest()
{
Console.WriteLine("DoHardComplicated Test");
}
public void Setup()
{
Console.WriteLine("SetUpDBTest");
}
}
internal class PingTest : IDoTest
{
public string ServerName;
public void DoTest()
{
Console.WriteLine("MaybeDoAPing");
}
public void Setup()
{
Console.WriteLine("SetupAPingTest");
}
}
internal class Program
{
private static void Main(string[] args)
{
TestDBConnection Do1 = new TestDBConnection { DBName = "SQLDB" };
PingTest Do2 = new PingTest { ServerName = "AccTestServ_5" };
List<IDoTest> allTest = new List<IDoTest> { Do1, (Do2) };
// Now I want to serialize my list.
// Its here where I get the error at allTest
XmlSerializer x = new XmlSerializer(allTest.GetType());
StreamWriter writer = new StreamWriter("mySerializedTestSuite.xml");
x.Serialize(writer, allTest);
}
}
}