根据参数更改方法返回类型

时间:2013-02-19 23:00:04

标签: c# reflection

我有以下打开和反序列化XML文件的方法:

private static object DeserializeFile(string fileName, Type type)
{
    Stream openFile = TitleContainer.OpenStream(fileName);
    XmlSerializer reader = new XmlSerializer(type);
    return reader.Deserialize(openFile);
}

我用它多次打开包含不同对象的不同文件。目前我必须以下列方式使用它:

City gameCity = (City)DeserializeFile(GameData.CITIES_FILE, typeof(City));

我感觉可以通过使方法返回一个对象作为参数传入的类型来避免类型转换。感谢。

1 个答案:

答案 0 :(得分:8)

解决方案实际上非常简单:

private static T DeserializeFile<T>(string fileName)
{
    Stream openFile = TitleContainer.OpenStream(fileName);
    XmlSerializer reader = new XmlSerializer(typeof(T));
    return (T)reader.Deserialize(openFile);
}

<强>用法:

City gameCity = DeserializeFile<City>(GameData.CITIES_FILE);