我有多種Action委託。採取例如:在單個字段中存儲和調用不同類型的Action對象
Action<float> floatAction;
Action<string> stringAction;
我想將它們中的任何一個存儲到一個變量,並能夠稍後調用它。那可能嗎?
SomeSortOfType action = floatAction;
//or
SomeSortOfType action = stringAction;
SomeSortOfType.Invoke();
我找不到Action類的基類,所以我對於這種方式是否可行有點無知。
Gr.Viller
這正是我所期待的,謝謝!用Delegate.DynamicInvoke代替Action.Invoke是否有任何警告,可能有一個原因是它不在那裏。 – Villermen
@Villermen最接近的方法是'DynamicInvoke'。你可以使用'd1.Method.Invoke'調用invoke,但是你需要提供額外的參數。我認爲原因是編譯器沒有關於這個Delegate持有的信息,因此它不能只是推斷類型。所以你在使用'DynamicInvoke'時也要小心,你必須提供正確的參數,否則你不會得到任何編譯時錯誤,但是在運行時它會拋出一個異常 –
所以如果我在一個實際上是Action的Action的代理上調用DynamicInvoke,它會不會爲它提供參數(某種東西)? –
Villermen