18
A
回答
34
這裏就是你問什麼的樣品(類型檢查可以在最後一行添加到妥善處理無效的轉換異常更加人性化):
public Action<object> Convert<T>(Action<T> myActionT)
{
if (myActionT == null) return null;
else return new Action<object>(o => myActionT((T)o));
}
可能是你可以給更多的細節這個任務雖然,因爲現在它看起來有點奇怪。
0
不知道你的轉換是什麼意思......動作是委託的泛型聲明...如果你想要一個動作代表,關於「對象」的作品,你會做這樣的事情:
var myAction = new Action<object>(obj=> ...);
0
我假設你有這樣的事情:
void Foo(Action<object> action) { }
Action<something> myaction;
而且要轉換myaction這樣你就可以將它傳遞給富。
這是行不通的。
Foo可以將任何對象傳遞給源自對象的動作。但我的行爲只接受來自某物的物體。
0
我正在尋找一種方法來做到這一點今天偶然發現這篇文章。真的,我發現這樣做的唯一簡單方法是將行動<字符串>包含在新的動作<對象>內。在我的情況下,我將我的動作放入並行字典中,然後按類型檢索它們。實際上,我正在處理一個消息隊列,其中可以定義操作來處理具有特定類型輸入的消息。
var _actions = new ConcurrentDictionary<Type, Action<object>>();
Action<string> actionStr = s => Console.WriteLine(s);
var actionObj = new Action<object>(obj => { var castObj = (V)Convert.ChangeType(obj, typeof(V)); actionStr(castObj); });
_actions.TryAdd(typeof(string), actionObj);
相關問題
- 1. 轉換操作數<T>整數
- 2. laravel「<」轉換爲「<」
- 3. 操作<<爲QString的
- 4. 轉換授人以行動<T>(動作<T1,T2>)
- 5. PHP操作<<<
- 6. lxml將「<」轉換爲<。爲什麼?
- 7. <在SQL Server中轉換爲<
- 8. <?自動轉換爲HTML註釋
- 9. Vim:下劃線(_)自動轉換爲(< - )
- 10. web.config轉換爲<applicationSettings>
- 11. 操作<<在隊列
- 12. 操作<< C++和GTEST
- 13. 使用<<操作者
- 14. 算術與<<操作
- 15. 使用<<操作
- 16. 的Java <<操作
- 17. <<操作員如何工作?
- 18. 這個轉換「1 << i」如何在Python中工作?
- 19. 轉換<和>
- 20. 錯誤:操作符<<在操作符<<((const Args *)a) - > Args :: getArgL()
- 21. C++無操作符<< <<「匹配這些操作數(繼承)
- 22. 標準庫函數的對象爲操作者提供<<轉換爲std :: string
- 23. 將JavaRDD <ArrayList<T>>轉換爲JavaRDD <T>
- 24. 錯誤傳遞工會作爲參數的操作符<<
- 25. 轉換動作<T>回調到等待
- 26. C#轉換動作<int>以拉姆達
- 27. 轉換List <Staging <Importable>>轉換爲List <Staging <ImportableImpl >> with java 8 stream
- 28. 爲什麼在操作符<exists時定義lt lt?
- 29. Meteor.js中的操作轉換?
- 30. 轉換操作員問題
這個問題沒有道理,你不能創建一個動作,你必須指定一個類型。 –
2010-08-09 21:14:17
猜測這些協變/逆變問題中的一個,否則答案將是'Action
除非T僅限於類,否則不能將開放泛型類型轉換爲Object。在代碼中,分配給Action