我有以下方法来打开和反序列化XML文件:
private static object DeserializeFile(string fileName, Type type)
{
Stream openFile = TitleContainer.OpenStream(fileName);
XmlSerializer reader = new XmlSerializer(type);
return reader.Deserialize(openFile);
}
Run Code Online (Sandbox Code Playgroud)
我用它多次打开包含不同对象的不同文件.目前我必须以下列方式使用它:
City gameCity = (City)DeserializeFile(GameData.CITIES_FILE, typeof(City));
Run Code Online (Sandbox Code Playgroud)
我觉得可以通过使方法返回一个对象作为参数传入的类型来避免类型转换.谢谢.
解决方案实际上非常简单:
private static T DeserializeFile<T>(string fileName)
{
Stream openFile = TitleContainer.OpenStream(fileName);
XmlSerializer reader = new XmlSerializer(typeof(T));
return (T)reader.Deserialize(openFile);
}
Run Code Online (Sandbox Code Playgroud)
用法:
City gameCity = DeserializeFile<City>(GameData.CITIES_FILE);
Run Code Online (Sandbox Code Playgroud)