class Foo<T>
{
public T Bar() { /* ... */ }
}
我想將Bar的名稱傳遞給Type.GetMethod(string)
。我可以這樣做,作爲someType.GetMethod(nameof(Foo<int>.Bar))
,但這int
在這裏是完全任意的;有什麼辦法可以省略它嗎?可悲的是,nameof(Foo<>.Bar)
不起作用。在不指定類型參數的情況下在泛型類的成員上使用nameof
在這個玩具案例中,這並不是什麼大不了的事,但是如果有多個類型參數,並且特別是如果它們附有約束條件,拼寫它們全部都可以成爲一項任務。
「例如,如果Bar在其簽名中包含與T相關的內容」這對我來說就是這種情況(編輯問題以包含此內容)。呃,好吧。 – dlf
對於這種情況,無論如何,我寧願只輸入一些不必要的類型參數。首先,具有'Bar'的'T'和'object'版本會使代碼容易受到與'nameof'相關的重命名錯誤的影響,這些錯誤首先被引入解決。如果我準備好容忍這種情況,那麼只要執行GetMethod(「Bar」)''就會更簡單。生活還要繼續。 :) – dlf
@dlf同意。將我評論的內容轉移到後人的答案中。 – 31eee384