簡體   English   中英

在運行時在通用方法內檢測委托參數

[英]Detect delegate parameters in runtime inside a generic method

[簡化問題]

給定以下通用方法:

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

並以以下方式調用它:

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

如何從MyFunction的代碼中檢測T具有哪些參數(因為它是委托)?

[你想做什么?!?!?!?]

我有一個方法的實際簽名為void MyFunction<T>(Expression<Func<T>> delegateReturner); 需要知道T所具有的參數而無需實際調用該方法,以便它可以從中生成LINQ表達式。

只要委托具有像Action這樣的空返回類型,就可以使用以下代碼。

public static bool IsActionDelegate(Type sourceType)
{
    if(sourceType.IsSubclassOf(typeof(MulticastDelegate)) && 
       sourceType.GetMethod("Invoke").ReturnType == typeof(void))
        return true;
    return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM