来自第三方应用程序的对象值提供了一个正确但键入错误的值。我正在尝试在我正在创建的通用方法中将这个对象值输入到我选择的类型中。我已经模拟了一个示例来演示该问题。
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”是一个有效的整数,但是当第三方应用程序将其键入为小数时,当尝试将其转换为整数时,它会失败。如何更改通用方法以使其不会因这种情况而崩溃?