サード パーティのアプリケーションからのオブジェクト値は、正しいが正しく入力されていない値を提供します。このオブジェクトの値を、選択した型に作成しているジェネリック メソッドに入力しようとしています。問題を示すために例をモックアップしました。
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' は有効な整数ですが、サード パーティのアプリケーションはそれを 10 進数として入力するため、整数に変換しようとすると失敗します。このシナリオで失敗しないように、ジェネリック メソッドをどのように変更できますか?