2016-05-31 6 views
1

I以下の方法があります。変換包括的に型指定された引数のラムダデリゲートは、オブジェクトに

void Foo<T1>(Func<T1, Exception> exceptionFunc) 
{ 
    // Following line error: "Cannot convert from 'object' to 'T1' 
    Func<object, Exception> exF = (e) => exceptionFunc(e); 
    Foo2(exF); 
} 

私はFoo2()によって必要とされるobjectFuncのジェネリック引数T1キャストする方法を見つけ出すように見えることはできませんが、どのようにこれを正常に行うための任意のアイデア?

+0

'Func exF =(e)=> exceptionFunc((T1)e);'? – Lee

答えて

1

あなたはT1にオブジェクトを変換する必要があります。

void Foo<T1>(Func<T1, Exception> exceptionFunc) 
{ 
    // Following line error: "Cannot convert from 'object' to 'T1' 
    Func<object, Exception> exF = obj => exceptionFunc((T1)obj); 
    Foo2(exF); 
} 

注:オブジェクトはT1に互換性がない場合、実行時に、無効なキャスト例外がスローされます。

+0

私は 'Func exF = obj => exceptionFunc((オブジェクト)obj);を試しました。ありがとう。 –

関連する問題