我现在明白我们不能反序列化未知类型。
但是,为了创建高效的代码,我不想创建一个反序列化的方法,该方法对不同类型有 X 量的重载。
EG,我的方法签名可能是这些(不断增长的列表)
static void deserialiseThis(Dog d)
{
Stream reader = new FileStream(@"C:\Documents and Settings\Name\Desktop\demo.xml", FileMode.Open);
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(d.GetType());
Dog d = (Dog)xs.Deserialize(reader);
DoSomethingDoggy(d);
}
static void deserialiseThis(Cat t)
{
//again but for cat
}
static void deserialiseThis(Mouse t)
{
//again but for mouse
}
这样做似乎更整洁
static void deserialiseThis<T>(T t)
{
//logic
}
或者
static void deserialiseThis(Type t)
{
//logic
}
这种方法的问题是我无法使用 T 实例化对象。但是,我可以确定类型是什么。
现在是使用工厂模式的理想时机吗?