我有一個後端類必須引發沒有參數的事件。 MethodInvoker具有所需的簽名,但它在後端類中使用它感覺有點奇怪,因爲它在System.Windows.Forms中定義。 .Net框架中的其他名稱空間中是否有另一個具有此簽名的委託?如果不是,你認爲我應該自己定義一個具有該簽名的委託或者使用MethodInvoker來代替?在後端類中使用MethodInvoker
2
A
回答
1
如果您使用的是.NET 2.0:
定義您自己的委託類型。在我看來,僅僅爲這種簡單類型引用程序集並不是好主意。
許多框架也這樣做。即使在mscorlib(2.0)中也可能有一些。但是,它們可能位於較深的命名空間中,這些命名空間的使用可能會與您的課程相結合,令人費解。
因此,在.NET 3.5之外使用您自己的代理類型。
1
如果您可以使用.NET 3.5,則可以使用Action
委託。如果沒有,那麼你可以隨時聲明(+所需的任何其他Action
或Func
代表)在Utils
類或類似:
public delegate void Action();
public delegate void Action<T1, T2>(T1 arg0, T2 arg1);
public delegate TResult Func<T1, TResult>(T1 arg0);
public delegate TResult Func<T1, T2, TResult(T1 arg0, T2 arg1);
等等
需要注意的是.NET 2已經包括void Action<T>(T arg)
代表,但沒有任何其他人
相關問題
- 1. 如何在C++中使用MethodInvoker?
- 2. MethodInvoker在WPF
- 3. WPF中的MethodInvoker?
- 4. C#MethodInvoker - 如何在類B中的類A中的線程中調用方法?
- 5. 使用MethodInvoker而無需調用
- 6. 我應該使用MethodInvoker或行動
- 7. MethodInvoker vs Action for Control.BeginInvoke
- 8. 在後端保留類型
- 9. 創建一個MethodInvoker函數
- 10. 如何使用前端和後端構造類(PHP)
- 11. 在Sails.js中將後端值發送到前端,並使用EJS
- 12. SAPUI5創建使用在SAP後端我使用後
- 13. 在CUB類後使用cudaDeviceSynchronize
- 14. Android前端如何使用PHP後端?
- 15. 如何在WordPress後端使用javascript
- 16. 使用在Keras(Tensorflow後端)binary_crossentropy損失
- 17. 使用後端文件nodejs
- 18. 使用AJAX與aspx後端?
- 19. 如何在STS中使用彈簧啓動後端創建Angular2類型腳本
- 20. 在前端使用關係在後端鎖定記錄
- 21. 調用MethodInvoker代表在一個時間超過1個項目
- 22. 如何使Keras在Anaconda中使用Tensorflow後端?
- 23. 使用Django的TransactionManagementError使用sqlite後端
- 24. 使用不同於後端端口的前端端口
- 25. 使用php後端在Android應用程序中顯示數據
- 26. url_for在後端用於前端 - Symfony
- 27. MethodInvoker +拉姆達+論據+ CrossThread操作
- 28. 單頁使用Web Api 2後端的CSRF後端
- 29. 在後端使用C計算的網頁前端
- 30. 在前端使用的後端查找代碼
不幸的是,我使用的是.NET Framework 2.0。您對後端類中MethodInvoker的使用普遍認爲什麼? – Ikaso 2010-03-04 11:42:28
我會在一個通用名稱空間中創建自己的.NET 3.5委託版本;這樣,當你這樣做的時候很容易轉換成3.5。而MethodInvoker是爲winforms跨線程調用而明確設計的;將其用作一般方法似乎在概念上是錯誤的。 – thecoop 2010-03-04 11:46:53
@thecoop能否請你指點一下展示.Net 2解決方案的示例?謝謝 – Fandango68 2016-11-21 07:53:16