我有一個簡單的問題,但我不知道什麼來處理它的最佳方式。如何根據參數強制轉換對象類型?
我有幾個不同的設置文件,並且我有一個GetData方法,它接收一個「路徑」參數。
public static CountriesInfo GetDataFromFile(string path)
{
if (!File.Exists(path))
{
return null;
}
try
{
CountriesInfo tempData = new CountriesInfo();
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(tempData.GetType());
StreamReader tempReader = new StreamReader(path);
tempData = (CountriesInfo)x.Deserialize(tempReader);
tempReader.Close();
return tempData;
}
catch
{
return null;
}
}
什麼是最好的方式來重構這支持傳遞一個對象類型,然後在該方法內進行強制轉換?眼下的返回類型(在這個例子中)是CountriesInfo,但我不希望有一些相同的功能,唯一的區別是返回類型和方法中的鑄造。
它是最好做的東西像傳遞ref參數和從對象獲取類型呀?
謝謝!
這將不會編譯 - 你不能轉換爲null,無限制的類型'T' – Lee
權,錯過了T必須是一個類的限制(現在又增加了它)。如果用戶也想支持結構,另一種選擇是返回'default(T)'而不是'null',在這種情況下,約束不是必需的。 – carlosfigueira
很棒。謝謝! – kodikas