0

【簡単な質問】

次の一般的な方法があるとします。

public T MyFunction<T>()
{
// ...
}

そして、次の方法で呼び出されるとします。

MyFunction<Action<int, string>>();

MyFunction のコード内から、T が持っているパラメーター (デリゲートであるため) を検出するにはどうすればよいですか?

[あなたは何をしようとしているのですか?!?!?!?]

void の実際のシグネチャを持つメソッドがあり、実際MyFunction<T>(Expression<Func<T>> delegateReturner);にメソッドを呼び出すことなく T が持つパラメーターを知る必要があるため、そこから LINQ 式を生成できます。

4

1 に答える 1

0

デリゲートの戻り値の型が Action のように void である限り、次のコードを使用できます。

public static bool IsActionDelegate(Type sourceType)
{
    if(sourceType.IsSubclassOf(typeof(MulticastDelegate)) && 
       sourceType.GetMethod("Invoke").ReturnType == typeof(void))
        return true;
    return false;
}
于 2012-09-30T04:59:51.110 に答える