2017-09-08 8 views
0

私は2つの関数を持ち、1つはパラメータとして関数を受け取り、渡された関数の戻り値を返そうとします。私は後でキャストする。関数1を関数2の引数として渡し、関数1の結果をオブジェクトとして取り出します。

object function1(Action act) { 
    object result = act(); 
    // do something with result 
    return result; 
} 
object function2() { 
    return (object)"string as object"; 
} 

そして、それはアクションが戻り値の型を持っていないことを、私はこのようにそれを呼び出すしたいと言う:

function1(() => function2); // so it'll return "string as object" as object. 

答えて

4

Actionメソッドをカプセル化するのではなくので、あなたがFunc<object>Actionを変更する必要があります値を返します。改善する

もう一つは、あなたが感謝を

T function1<T>(Func<T> act) 
{ 
    T result = act(); 
    // do something with result 
    return result; 
} 

string function2() 
{ 
    return "string as object"; 
} 

をキャストに対処し、この

string myString = function1(function2); 
+0

ようにそれを使用する必要はありませんので、ジェネリック医薬品にはfunction1を変換することができるかもしれないということですそれはうまくいった! (10分後に答えることができます – BladeMight

関連する問題