來自第三方應用程序的對象值提供的值正確,但輸入的類型不正確。我試圖在我創建的一個通用方法中輸入這個對象值到我選擇的類型中。我嘲笑了一個例子來證明這個問題。.net通用打字對象與其保存的不同類型
static void Main(string[] args)
{
decimal d = 1; // this can't be changed
var v = Method<int>(d); // what I'm trying to do
}
//the code in this method can be changed
static T Method<T>(object input)
{
T output = default(T);
//causes InvalidCastException
output = (T)input;
return output;
}
正如你所看到的值「1」是一個有效的整數,但作爲第三方應用程序類型它作爲一個小數,試圖將它轉換爲整數時翻倒。如何改變通用方法以便它不會在這種情況下崩潰?
這隻適用於'T'和輸入類型的有限集合(即實現'IConvertable'到IConvertable'轉換爲的項目),即使它*出現*以處理一般情況。在這方面這是誤導。 – Servy
這種情況很簡單,可以滿足需要。一些錯誤處理被添加到完成這個答案,但是這是最終使用的。感謝您的輸入。 – Thundter